Being flagged as "alive/dead" is not the same as being flagged as "active/inactive". When either the Machine Gun or Laser Cannon spawn in, it toggles the "active"  var, which it's counterpart then looks at to see that it is not supposed to spawn until the other enemy has decided to recede back into the Warning Board.
I noticed that both the MG and LC both perform a check while they are active to look at the "death" status of its counterpart and behave differently accordingly. The only thing is, once you kill either the MG or LC, the other one will not spawn back in, which leads me to believe this was a mistake; why would the check be there otherwise?
This occurs because when you kill say the LC, it will be flagged as dead, however, it will not toggle the "active" flag, so when it's MG's turn to spawn in, it will think that the LC is still active (regardless of it being dead) and will not spawn in.
I added a simple death counter which looked like this for both the MG and LC:
0x000BattleAddr(&2060).BattleAddr(&4020) <- 0 0x00ASCRIPT END
This toggled "Self's"  "Active"  flag to 0 upon death, which means that the other enemy will spawn in after you've killed the first, as it was intended. I was quite chuffed to see my script work tbh, not only did it mean that I had analyzed the problem correctly, but I also managed to play the game with my custom AI script loaded, which is a first for me :) I'll creating bad-ass boss AI script in no time haha