Most likely a bad engine to battery cable/connection, or engine to firewall ground. Could also be the factory type ECU ground to firewall.

I have traced this problem to a ground loop issue on several vehicles. Seems pretty common with the stock type ECU.
Under the current load of cranking the starter, the ECU magnetic pickup reference voltage changes to where the ECU does not correctly sense the magnetic pulse, so no fire until the current load from the starter motor stops.

You could just trigger the MSD from the magnetic pickup too, and not use the white wire trigger from the factory type ECU.
With the MSD, no need to have a ballast resistor either (unless using a 5-pin factory ecu that requires the dual style ballast resistor.)
Still need to fix the grounding problem in either case.