There are three main causes.
* CPU emulation. In Snes9x (CATSFC), the CPU emulation loop goes over each instruction, parses it, then determines what to do in C code. That's slow. In gpSP (TempGBA), the CPU emulation loop goes over instructions it has not seen before, parses them, then transforms them into raw machine code that it runs when it is asked to run the game.
* Sound. On the SNES, the audio processing unit (APU) is separate from the CPU and very processor-intensive to emulate, due to having so many things: 8 channels, each with pan, frequency modulation, samples or noise, and an echo buffer. The GBA has 2 direct PCM channels fed directly from memory, 2 beeper channels and noise, and the audio is controlled by the same CPU as the game. Those are much easier to emulate.
* Graphics. The SNES has many graphical modes, with 3 backgrounds, color subtraction/addition effects, or rotation, or transparency/translucency, or fading, and sprites. The GBA has two backgrounds with possible fading, alpha blending and transparency, and sprites.