This one was pretty hard, 4th gym is where the games always kick off. You have good pokemon to catch, your team members are evolving left and right, the enemy team is fighting you pretty seriously.
I'll go for Nimbasa. I loved the gyms and those songs in B2 were awesome, the stadiums for some extra battles and just the overall flashing lights and fun fare theme.
Second place is for Celadon. Getting a free Eevee, buying stones and exploring the mall, checking out the rocket game corner, picking up HM Fly, good times. The gym was underwhelming both times though.
Pastoria was kinda nice and laid back, but not that amazing. The Safari Zone was kinda crappy again. Crasher Wake was a cool battle though.
Lavaridge was a nice town and Flannery was cool, but it wasn't much to talk about.
Alot of the Johto cities had this boring depressing feel to it, especially Ecruteak and Voilet. I will give props to Morty though, his gym was cool and I always like Ghost trainers.