GP32 is using 16bit SDRAM? News to me, I always assumed 32bit. Guess it doesn't have faster memory than GP2X afterall.
However, you will never ever execute instructions directly from main memory (if you do performance will be very poor). Instead you should always be executing from instruction cache, which will have a 32bit interface on any ARM9. Thumb's greater code density does theoretically mean fewer cache instruction cache misses, however I think you'll find that this is rarely a bigger win than what you lose due to the inferior nature of Thumb code. Instruction cache tends to do fine with code that runs a lot within critical inner loops (like renderers) - if the loop fits in icache then you'll be okay (on the other hand, interpreters for emulators might have a much bigger footprint). The bus width to memory is irrelevant because the cache line fills happen at the same word size loads regardless of whether it's ARM or Thumb code.
If you look at Nintendo DS code, it tends to be ARM code despite having half as much L1 instruction cache as GP32 (8KB). This is in stark contrast to GBA code, which is almost always Thumb when running off of the cart, due to direct 16bit fetches (code running off of IWRAM, on the other hand, tends to be ARM).
In the end, hand optimized ARM code will probably win more in code density than compiler generated Thumb code anyway.