Peliper, Golduck, Tentacruel
All three of these Pokemon, along with Swampert, are the best. They all have decent Special Attack stats that make Surf potent enough for iname play, and they learn other HMs which is pretty useful too.
Pelipper learns Fly, and has Drizzle as its ability, so it's Surf is an effective Basepower 135 move, which works well with its 95 Special Attack. If you don't have another Flier, then this one is an easy pick. Also, Rain is great when paired with Mega Swampert's Swift Swim, but it's your choice whether you want 2 water types or not.
Tentacruel is faster, has great special defense, and learns Cut along with Waterfall and Dive, so it's an effective HM slave.
Golduck has well rounded stats, and can learn Rock Smash, Strength, Waterfall, and Dive, so it's also a fantastic HM slave.
Depending on the rest of your team and HM needs, you can easily select any of these Pokemon. Pelipper and Tentacruel are super easy to obtain, so keep that in mind as well.