You can play Game Boy and Game Boy Color games on a Game Boy Advance or SP or Micro, or even a SNES or GameCube with special hardware accessories. You can play Game Boy Advance games on a Nintendo DS or DS Lite. You can play GameCube games on a Wii, and Wii games on a Wii U.
There was a specific effort to include hardware from the previous generation in the next, for at least one step of backward compatibility. The GBA had a separate Z80 in addition to the ARM7TDMI to do that. The DS and DS Lite had dual processors and dual cartridge slots, but the DSi ditched the GBA slot. Thus, those were technically capable of running ROM images of GBA games if you found a way to load them and start the ARM7 processor in the correct mode. The 3DS can, of course, play DS and DSi cartridges, having both ARM11 and ARM9 processors.
So it is apparent that Nintendo has supported backward compatibility by essentially packaging two hardware systems into one box. That isn't what I would do, but that's what they did.
They burned goodwill with me for not writing decent SDKs for their hardware, such that about every game has to do a roll-your-own reach into the hardware. Which doesn't translate to the next generation of hardware. Stupid. Just write a damned SDK, and make the 3rd party dev shops hate you less.
I always keep my old cartridges, even though most of my old hardware is no longer capable. It's my proof of license, for when I download the ROMs to play on emulators.