The downside is that when you put MovieClips inside of other MovieClips, timing issues come up. Your MovieClip gets the onLoad event, but this doesn't mean that all of the nested MovieClips are loaded, and I have found that they never are.
So, what I do is have the leaf MovieClips (the ones with no children MovieClips) tell their parent when they have loaded. The parent then determines when all of its children have loaded, and when they have, it notifies its own parent, and so on down the chain, until the main object knows that everything has been loaded, and that it is safe to use all MovieClips.
It sort of has the same feeling as multi-threaded code, but only for loading MovieClips. The rest of the time, I can use the objects normally.