I've pretty much stopped using HM slaves, just because reusable TMs makes it so easy to rebuild a moveset. I just put whatever HM moves I need on whoever can afford to carry them in place of a TM move, then go to the unlearner when I get a chance and get it removed and put the TM move back.
In Gen V, I generally put the early garbage moves, before I get to the unlearner, on a Patrat or Watchog. Later on, if I'm rotating through a lot of pokemon and don't want to have to bother keeping track of it, I have a Swanna with Surf and Fly so that I know I always have those moves with me. But if it's a fixed team, I've got them worked into the team's movesets somewhere instead.
The last time I used actual HM slaves was in DPPt, and there I tended toward Bibarel more than anything else, though Aipom makes a pretty good early HM slave, since it learns Cut, Rock Smash and Strength and gets Pickup. Bibarel's easily the best though. With Tropius in Platinum, between the two of them they could carry every HM in the game. But since Tropius isn't in Diamond or Pearl, I had to make do, generally with that traded Chatot.
In RSE, I used Zigzagoon/Linoone and Tropius for field moves and Wailord for water.
And if I have a Geodude early on, I always put Rock Smash on it, but otherwise it's not an HM slave really.