Coincidentally, I have been messing with screens lately and it occurs to me that this issue might be easily fixed by replacing the action behind the stop button.
Both my mill spindle and 4th axis have enable/disable states and pneumatic locks, so I have long ago replaced the spindle ON/Off with macros which check the condition of the lock and enable state prior to starting the spindle and check the speed of the spindle prior to engaging the lock and so on. Both spindles are AC servos, but the drives themselves take care of deceleration in the event of a sudden pulse stream loss, so that was never an issue that I needed to resolve.
I jumped into the Mach3 screen editor to confirm that the red 'stop' button can indeed be changed to trigger a VB script. (see attached image)
From there it should be an easy task to program any sequence you want including checking the spindle speed and decelerating it to zero prior to MACH abruptly shutting off the pulse stream. I am unsure if the 'ismoving' function in MACH works with the spindle, but in case it did not, I recall Hood saying that there is a 'speed reached' signal available from the drive. I use this signal to prevent Mach from moving the axis prior to the 4th axis reaching speed (for turning) and it works fine.
There are probably a lot of ways to skin this cat, but off hand, I don't see why commanding zero speed and then monitoring a 'speed reached' signal from the drive prior to issuing a 'stop' would not be a complete solution. There may be a way to stop the axis movement while waiting for the spindle to decelerate, but I would need to noodle on that for a while.