In Diamond I just taught them to whoever I thought would make the best use of it, but I recently read the theory that it's better to teach as many as possible to just one or two in your party. What do you guys think?
For most of them, I try to find a pokemon that can learn many, because most of the HM moves aren't really that good. One exception: Surf. That is always given to my water starter because, well, it rocks.
I keep one or two HM slaves on my team, usually. Surf goes on most Water-types that aren't Gyarados or Feraligatr.
Kraby is my hm slave. Cut/Rock Smash/Strength/whirlpool. For Surf i have my Lanturn and for Waterfall i teached it to the red gyarados.