For their day, Pokemon Gold, Silver and Crystal used pretty bigass ROM carts (2 Megabytes, and even the original Red Blue and Green where 1MB or less!), and they really utilized every single byte to the fullest potential. Johto seemed much larger than the space it actually occupied, which was all in clever design of course, but the fact that you could go back to Kanto was really impressive considering that you are basically fitting two games onto one cartridge that barely had enough room for the first game anyway. All of this, plus a somewhat cool landscape design, and there's so much outlandish crap you can do in Johto. All this, fitting into 8KB of video RAM and 8KB main RAM on the Game Boy Color. Jesus, that's like fitting a bundt cake into an ice-cream cone.
The only thing that killed the game for me was that even when I was about 10 or 11 (something like that), I was aware that the game held savefiles on battery-backed SRAM (Static RAM, same tech used in SNES carts), meaning eventually the battery would crap out and I would lose my save, plus never be able to save again. It's not that it killed the game itself, but when that happened about six months ago, I could never use my original cartridge again. But hell, I still willingly play the Johto games over the others anyday via my DS.