EZ Flash IV : GBA, DS Phat, DS Lite (sticks out)
I've heard good things about the EZ Flash IV, but i've never put down the cash for it (at least not yet). Only real downer is that there isn't a lite version of it (so it'll stick out of the DS Lite)
If you do decide to take the EZ Flash IV route RoMee has created a fantastic setup guide for it over
here
EZ Flash 3-in-1: GBA (limited functionality), DS Phat (in combo with slot-1 flashcart), DS Lite (in combo with slot-1 flashcart)
Another you have is using the EZ-Flash 3-in-1 (which has a lite and phat version, so it will be flush), this will rely upon your DSTwo to have the games and saves to load onto the 3-in-1, so unline the EZ Flash IV, you need to have both the DSTwo and teh 3-in-1 in at the same time to run GBA games.
If you flash a GBA game onto the NOR flash you can run that game without a slot 1 flashcart (and if you have the phat shell, you can run that game on a GBA too)
Once again, there is a guide to setting that up, you can find it
here
DSTwo with NDSGBA emulator: any DS or 3DS
This is obviously the only way to play GBA games on a DSi, (XL) or 3DS (not counting some other less significant flash carts which also have this feature). I personally use this even though i have a 3-in-1, it's just more convenient and easy to use. The only time i bother to load up my 3-in-1 is if the emulator runs a GBA game poorly