There are a couple of different methodologies that can be employed. One of the main reasons for creating sub-assemblies is for manufacturing process. For example, it is standard practice to divide the main assembly as you see in the picture below into several sub-assemblies based on the department they will be created in. Tanks at one end of the plant, scaffolding in another, or even if the products were purchased. By having them in different sub-assembly groups, drawings and part numbers and designer/engineers can be easily organized.
Now the other reason for creating sub-assemblies is performance. This can go in two ways; whether you are creating them for file management performance or you are going to animate. If you are needing to create the assembly efficiently and are trying to reduce modeling time and file size; there are several features you look into. For example “mirror component”, “linear/circular pattern”, and my favorite “Feature Driven Pattern” are great for the fore mentioned purpose.
As for animations, the first and foremost thing to understand is that the more mates you have, the more work your processor and video card have to do to calculate and show your assembly. Try to combine components into a sub- that are connected together which won’t move with respect to each other. The best way of doing this is to use “Form New Sub-Assembly”. This option is allows you to create a brand new virtual sub-assembly on the fly. Simply right click on a component in the view port or assembly tree, you might have to click the double arrows to expand the drop down menu.
For more information on animations or assembly structures please look at the SOLIDWORKS World 2012 presentations. I recommend Arnav Mukherjee’s Assembling for Motion Simulation.