Pretty much exactly what Rydian said. (yet I'm still going to add to it for no good reason >_>)
If you read nothing else I post, read this. The key issue here is the difference between natively running a program on the hardware it's designed for, and emulating in software because you *don't* have the hardware it needs. The GBA/DS situation is much closer to the second one than you might think, and that alone is the setback.
[further details]
The DS contains an ARM9 at 66 MHz and an ARM7 at 33 MHz. When in DS mode, it uses the two of them combined for full system operation. When in GBA mode, only the ARM7 is used, underclocked to 16 MHz. The thing is, that ARM7 operates *entirely* differently depending on which mode it's in. That's why even though the DS does technically have the hardware needed to run GBA files natively without software emulation, it can only be done from within GBA mode, and several technical reasons require that to be done from slot-2. If you want to run it from within DS mode, using the full power of both CPUs, you have to do software emulation, which is much much slower and requires much more power to do.
It is unlikely that we will ever get fullspeed software GBA emulation on the DS and DSLite using only the native on-board components. ichichfly is doing amazing work with his emulator, and quite honestly if you had told me 3 years ago that he would be even this far, I would have said you were insane. Currently the better option seems to be with the SCDS:TWO or any other future carts that arrive with the same idea. We can't make the DS any more powerful, but we can put a fast CPU on the cart itself and have that handle the emulation, simply using the DS for audio/video output and control input.
On the DSi, you no longer have a slot-2, and while you still have that 33 MHz ARM7 chip, my uneducated guess is that it can no longer function in GBA mode even if you could somehow get the data to it in the first place (not to mention all the other GBA-specific hardware they likely scrapped to save space). Thus, your only option is software emulation. But there too, the DSi is not very powerful overall, and I'm not too hopeful for it either. But hey, I could be wrong - SNES Advance shocked everybody when it first came out, after all. Even still, I still think that having the faster components on the slot-1 cart itself is the best option here.
Now the 3DS is a much beefier machine, looking at the specs. If and when we can actually *use* that processing power, then I could see it happening if someone bothered to write the emulator.
Note however that your initial argument still doesn't work here. The 3DS is *designed* to run DSi and DS files - it has the hardware built-in. You can't say "If it can run DS then it can run GBA" because again those are entirely different modes of "running" the file.
EDIT: Actually, isn't Nintendo releasing some GBA titles to people who bought the 3DS when it was more expensive? That alone would be a software emulator made directly by Nintendo, meaning it would indeed be possible.
EDIT 2: Speaking of that distinction, also keep in mind that Nintendo is much more capable of creating a working software emulator than we hobbyists are. They know the system in and out rather than needing to reverse-engineer everything. This is why the
Zelda Collector's Edition could exist. Normally I would have said "Flawless N64 emulation on the Gamecube? You're crazy!" And indeed, looking at the homebrew Cube64 emulator, it's not very good at running those games. But Nintendo had the resources to pull it off. You can actually remove the Ocarina of Time and Majora's Mask roms from the Gamecube ISO and replace them with other N64 games, and some of them will run (compatibility isn't the greatest because it's likely Nintendo took shortcuts since only those two games needed to run on it).