Ok. I can explain to you what's going on in details)

There are some enemies and projectiles in Metroid that uses 002D and 002E addresses to calculate their patterns / trajectories. They do XOR (something like bit to bit logic "or" operation) between those 2 values and resulting value determine what those enemies should do. Usually it's just a last bit of resulting value that important. 002D are just a frame counter and random 002E value calculates by taking previous 002E value and like calculating new value from that.

Let's check specific enemy in japanese version first:

https://youtu.be/YpLP8aGXcWs?t=751Notice how those "fireballs from the ground" flies all over the place in different directions. So this means that resulting value after XOR between 002D and 002E can have different "last" bit (0 or 1)

And now let's check same enemy in US version:

https://youtu.be/hITQI5bPRuM?t=576Notice how all those fireballs flies in the SAME direction! This happens because developers for some reason changed how "random" 002E value calculates in US version and now when game do XOR between 002D then game always gets same last bit in resulting value.

So it's like if (depending on starting 002D value) game gets 0 as the last bit after XOR then it gonna get same result no matter on what frame XOR calculation happens until you take a death or do a reset. That's because when you die game drops 002D and 002E calculations for a few frames. And now those values are shifted exactly by 1 frame of calculations comparing to each other. So if like before death after XOR game always gets 0 as the last bit in resulting value then after death it always gets 1 as the last bit after XOR. So this is actually a bug in US version of the game

edit: and also also also. When Nintendo made SMB3 they reused a lot of ideas from previous games like Metroid, Japanese version of SMB2, Doki Doki Panic etc. There are 1 enemy in SMB3 that was clearly inspired by Metroid enemy and that enemy in SMB3 uses behavior as enemy from US version of metroid.