Strange. If it was a BRK instruction I think it'd stop in JMP loop, but if the stack is still changing, something might be retriggering it. Is the SEI instruction used? Usually it's the first one executed. BRK is the only way to trigger an IRQ, until you use the CLI instruction to enable interrupts.
Also, you could try setting D7 of $4017 to 1 or 0 and see if that changes anything. (it selects between internal and external (MMC3) IRQs)
If it works on all other emulators though, it might just be a problem with the mapper emulation. No way to know until you try it on the real thing. (and there are revisions of MMC1 and MMC3 that are slightly different, too..)