In my view, the answer is going to depend upon a number of other considerations. If you're creating meshes for a model of a house, and you're going to want the choice of showing the windows and doors either open or closed, you will need every window and door you want to be able to modify individually to be independent both from the main mesh, and from the other windows and doors you want to be able to modify. If you want a weather vane on the roof, and want it to be able to indicate the virtual wind, part of the weather vane needs to be a separate object, too, so that it can be rotated. However, this principle does not necessarily apply to texturing, as the same texture can be applied to multiple materials by means of careful unwrapping / mapping.