1. Theoretically it could be done by ROM, would be obscenely tedious though as you would have to go through all the game to change all the pointers and all the logic to allow it work from a new address. A flash cart type thing that can just set a page of the storage you are using and press go would be thousands of times easier and less tedious.
2. Software wise then 32 megabytes before hardware trickery, if you are doing hardware trickery then you might as well do a proper flash cart. A proper flash cart storage... the EZFlash Omega they just released supports the exfat file system and as such you are easily up in the hundreds of gigabytes. If you are designing your own cart then the sky is the limit. Consider that there are maybe 3000 GBA games, call it an even 4000 for all the hacks and homebrew you would want and assuming they are all 32 megabytes each (most are 4 to 16) then you are at about 125 gigs, something I can apparently get for $51 CAD
https://www.bestbuy.ca/en-ca/produc...-s-microsdxc-uhs-1-memory-card/11797073.aspx? at time of writing.
3. To use as GB/GBC games on a GBA/GBA SP. No, at least not without hardware fiddling (see something like the GB Bridge). If you are just going to wrap those GB/GBC games with Goomba and boot them as a GBA game then yes, indeed goomba (and most other emulators) have such functionality by default.
4. I can see a path to there being troubles with some setups but I would expect it to work.