interesting question but I think you have to narrow it down some, because of the different ways of emulation;
mame-type: complete disconnect from hardware, can run anything on anything but costly in resources. (I remember running a 4MHz z80 game on A1200 28MHz at around 1-2 fps)
Considering I could run a Spectrum emulator at full speed on a 14MHz A1200, I would hazard that the MAME issue is being totally disconnected via abstraction layers from the underlying hardware, being written in C, and also probably emulating some complex graphics chippery on top of that.