I finally took a look at the "bad dump", turns out it's not really a "bad dump", someone modified the ROM.
Entry point jumps to 0:00e0, which is just nops in the good dump, but this space was used to add the following code:
ld a,0
ld [$6000],a
ld a,$30
ld [$6000],a
jp $0150
This code makes no sense, the header says it uses MBC1, where $6000 is a 1-bit wide register that flips between two different banking modes. Maybe this is for flashcart compatibility?
In addition, a ld a,1 got patched to ld a,0 at 00:024C, and again at 01:488E.
Finally, the header checksum got patched.