Oh, as long as we're talking about story surprises, I was actually extremely surprised in FireRed, after I defeated Lance and found out that my rival was the actual final boss!
Best twist ever. You reminded me of my first Red playthrough. It was on an emulator (my first handheld was a GBC, which I bought just for playing Pokémon Silver) and things were so exciting in a way the newer games just can't emulate (maybe because I'm not a kid anymore). Battling the E4 was as amazing and challenging as it gets (every pokémon defeated was an unbelievable victory, and so many revives used between battles). Finding out there's one more opponent to go - and not any opponent, but your rival - and sweating your ass off to beat him made for one of the most incredible video game endings I've ever experienced.