Ok, so once again this behaviour is a consequence of where we choose to process input.
What's happening here is that the NMI generated by the pause button is delaying processing of the first IRQ from the scanline interrupt.
What's supposed to happen on the first interrupt is the game changes the value that the scanline counter is reloaded to.
The intended sequence is:
HINT (at HINT, the counter is reloaded to the value in register 10, currently 0)
IRQ1 (to set register 10 to 173, at the end of the frame.)
HINT (since the counter was reloaded with 0, we get another IRQ)
IRQ2 (do frame stuff, we won't get another IRQ until SL=175)
But, since we get just enough of a delay from NMI, instead what happens is:
NMI
HINT
IRQ1 starts, but doesn't update the counter yet!
HINT (the counter gets reloaded to 0 a second time!)
IRQ1 ends
IRQ2 starts (this is the second IRQ that processes frame stuff.)
HINT (another HINT , but NOW the counter is reloaded to 173)
IRQ2 ends
IRQ3 (the glitchy one, which happens because of the extra counter reload)
So, that's pretty much it. Once again, if we had chosen to process input at VBlank, like most other emulators (and most other BizHawk cores) we would not see this glitch.
It's also not something you'd likely ever see on console. You basically have a ~300 CPU cycle window to hit this glitch! :)