After we discovered this speedrun route works on console and BGB but not Gambatte/Bizhawk we investigated a little and found out that the issue is caused by Gambatte's implementation of bankswitching for MBC5 specifically.
MBC5 is capable of bankswitching to bank 0 (having bank 0 accessible from 4000-7FFF as well as 0000-3FFF) but
(lib)gambatte assumes that any bankswitch to bank 0 retrieves bank 1 instead like in earlier MBCs..
This particular glitch setup causes Pokemon Yellow's audio engine to bankswitch to bank 0 and read invalid data from there. The invalid data in bank 0 leaves the game in a more stable state where we can proceed to catch Missingno, while the equivalent data in bank 1 instead softlocks the game.
TL;DR: this inaccuracy is caused by an inaccuracy in gambatte's MBC5 emulation, to fix it adjust Gambatte's MBC5.adjustedRombank function to allow bank switches to bank 0.