Giovanni. I always found it interesting how they decided to use the main villain of the games as a final gym leader, so it came completely unexpected. Although since you had battled him a few times prior to the gym battle, you kiiinda knew which Pokémon that were good against his, so it gave less of an experience when battling him, as the final gym leader of the games.
Brock was also pretty close, mainly because he was the first of all the gym leaders ever. Also all of his great moments in the anime is one thing that have made me like him so much, and I always thought he was a pretty cool gym leader.