Scott Hanselman, in a recent post - Assembly Fiefdoms: What's the Right Number of Assemblies/Libraries? does a nice write-up of the topic. There is one interesting edge case where the standard advice does not apply.
For low bandwidth users of rich client applications downloading a few large assemblies for updates isn't an option. I'm not talking about your Aunt Millie who's still on a POTS line, but rather the villager or scientists working where running water and electricity are still luxuries. In this case, the ideal deployment configuration is one assembly per class, or more realistically one, assembly for each strongly connected component
Organizing your development tree for such a deployment scenario would be a nightmare, so in this case what's needed is the reverse of IlMerge, ILDecompose.
My version is still in development, one of these days, when I get the time :) I'll look into open-sourcing it.