I would like to chime in a bit.
Though I cannot speak for Nifs, I can speak to how I make models, and what I have done in the past.
Generally I try to create a model as one complete object...think of it as a bubble. Bubbles have one outside surface, so does a unified model. That means you have to combine two objects together at the points they join together/overlap each other if you want to unify them. You can either use the boolean tool (tough to use) or just do it by hand. Both methods can be tough, there may be better ways that others can indicate.
Note, however, that sometimes for the sake of ease with respect to creating other versions of the same model I may have two or three different objects in a joined model...say if I have two different nacelles for the same ship. Makes creating a refit easier, and those models do run in BC without any problems as far as I know.
Also, I create ID groups, groups of polys labeled with an id that I apply a texture to. So I may have three separate textures applied to one model, but assigned to different poly groups. This allows someone to separate up the mesh based on the textures that are assigned, and makes modification much easier. This also allows for the sort of thing like my Klingon house symbol changes allowed on the E-7, so someone can customize the model to their liking.