The main flaw with the Johto region is that Game Freak made it so that people can challenge either Pryce or Chuck as the 5th Gym Leader. They made it an option to head for Mahogany right after you beat Morty, hence why all the Pokemon in that area are around Lv15. This becomes a problem if you head for Olivine right after Morty, because by the time you finally reach Mahogany, all of your Pokemon are in the high 20's/low 30's, and you're still fighting pathetic Lv15 Pokemon.
The hardest Gym Leader in the game is probably Falkner, since he's the only Gym Leader that's at the level he should be. Everyone else was pathetic. I guess Game Freak tried to design the game as if players think like "skip every trainer as much as possible!"
However, the one good thing they did with HG/SS is that all of the Kanto Gym Leaders now have Pokemon in the 50's. This was a problem in G/S/C, the Kanto Gyms only had Lv40 Pokemon, which made no sense, since at that point in the game we've already beaten Lance, who goes up to Lv50. HG/SS fixes this, and has Lt. Surge go up to Lv53.
not to mention the final Team Rocket executive with his houndour
I really hope you're just kidding.
Seriously, when Archer sent out his Lv35 Houndour, I'm all like, "WTF!?!? This is the final boss of Team Rocket, and he sends out this tiny dog? Is this a joke?" And then I proceeded to murder his entire team very easily. (and my Pokemon were only around Lv36, so me and him were pretty evenly matched in level, considering his Houndoom is Lv38)
Let's look at Cyrus's team, the final boss of Team Galactic:
1. Houndoom
2. Crobat
3. Gyarados
4. Honchkrow
5. Weavile
And now let's look at Archer's team, the final boss of Team Rocket:
1. Houndour (LOL)
2. Koffing (is this a joke?)
3. Houndoom
See what the problem is here?