Quoted By:
Let the gym leaders have one off type guy that fits he theme. For instance, let the psychic gym leader use Golduck, or a grass leader use Sudowoodo. Rock gym leader can use Spiritomb or even a ground type that looks like rocks likes Hippopotas or something.
Another way you could do it is if there's a normal type gym leader with, like, a Delcatty Persian, and a Pyrugly, go ahead and give him a Liepard or a Meowstic, just so he has another cat, even though it's not a normal type. Or a fire gym leader with Arcanine and 2 Houndoom (let's be honest, gym leasders often have two of the same thing), go ahead and give him a Stoutland, even though it's not a fire type, just so he has another dog. Stuff like that isn't THAT much of a curve ball. Kids could handle Sabrina using Venomoth or Goivanni using Persian in Gen 1. Hell, Lance's team on the elite 4 used Charizard, Aerodactyl and Gyarados. As long as you don't go too overboard and do dumb stuff like "Electric trainer with 2 Pelipper for no damn reason, hur-durr" you're fine.
Giving the leaders dual types helps too, like water leader with Quagsire and Tentacruel so you can't just spam Thunerbolt or Giga Drain, you need to switch at least a little.