HeartGold/SoulSilver are really broken when it comes to fluidity.
In later stages of the game, currently for me just Blackthorn City and Indigo Plateau, the highest level wild Pokemon available to battle are 10-15 levels lower than the Pokemon the "boss" characters you're going up against have, so you have to spend hours just grinding to get to a high enough level so you're not destroyed. The big problem arises when you have a Pokemon that's weak to the primary Pokemon that appear in that highest level area and you have to switch them out (i.e. my Pidgeot can't do stuff against the Gravelers and Onixs in Victory Road and if I try I get Rock Throw'd/Self-Destruct'd to death) in order to beat them. It never really bothered me before, but after playing Green and spending maybe an hour and a half total doing any grinding at all (most of which was before the Elite Four, which I barely squeezed by) I find it to be very unnecessary.
I can see how they might be trying to make it more realistic, so you have to train to get anywhere, but it's really just a pain in the ass and needs to be toned down.