There's another consideration, which is are you optimizing hackage by pessimizing development? You could break xmonad-contrib into (usually) one package per module if you really wanted to --- but now the developers need to track a couple hundred packages and possibly as many darcs or git or whatever repos. You've just nibbled that project to death by making it too difficult for developers to bother with.