Kanto: Paras (Flash, Cut, Rock Smash)
Johto: Furret (Cut, Strength, Surf, Whirlpool, Rock Smash)
Hoenn: Tropius (Cut, Fly, Strength, Rock Smash, Flash)
Sinnoh: Bibarel (Cut, Strength, Rock Smash, Surf, Whirlpool, Rock Climb, Waterfall); very important as it's the most HM-heavy region
Unova: Panpour (Cut, Rock Smash, Surf, Waterfall, Dive); HM use is very light in this region; Cut is only mandatory once
Kalos: Bibarel again for the same reasons, but also Hawlucha (Cut, Rock Smash, Fly, Strength) or Diggersby/Pangoro (Cut, Surf, Strength)