One theory is to reduce the number of clicks a user has to make to perform the action. Another would be not to hide the options available - if someone can't see the option they don't know it's there.
When all the social sharing sites (Digg, Reddit, Facebook etc.) all had very roughly the same traffic there would be a case for including them all on a page. As you point out this would lead to clutter so they were all put behind a "share" button which would reveal them all via some flyout/AJAX/whatever.
However, now that there are some clear winners in the social sharing sites - Facebook, Twitter being the two obvious ones it's much easier to include a small number of "share" links that everyone is likely to have access to. This both reduces the clutter on your site and the number of clicks needed to actually share the link. Both of which will hopefully encourage sharing.
How many should you have? - one or two lines across your site, but that isn't backed up by anything at the moment.
Which ones should you include? - well there's the obvious ones (Facebook, Twitter) and beyond that you could track which ones are actually used and remove those that aren't used replacing them by others in the list until you have the ones that some people use. You'll probably find that you won't be able to please everyone.
As I said in the comment if you make it easy for you or the site admins to configure which links are shown you should future proof yourself to a certain degree.