mactec,
You are working under the premise that all Mach 3 controllers are configured the same way, which would be the same as yours. It will only run fine without G91.1 (or G90.1) if the controller matches the program. That's what you seem to be ignoring. Mach 3 is not a constant. It's a variable. Mach 3 can be either absolute or incremental. If you walk up to a Mach 3 controller that you didn't configure personally, it is possible that it is not what you normally experience and you would have to check to see which IJK mode it is set to before you try to run a file. You could change the setting manually (which the owner may or may not like), or you could just use G90.1/G91.1 and know that the controller will conform to your programming methods rather than you having to conform to it's settings. This is why you declare to the controller what the IJK mode is in the program, just in case it's in the wrong mode because you can't presume that it is. If it's your personal machine and you are experienced enough to know what mode you are in and how your post processor is configured, then go ahead and leave it out.
It's the same as inches or metric. The controller can be set for either by default. It does not have a "standard" setting. It has the setting the person who configured it has given it. Mine is set to millimeters. Perhaps yours is set to inches. Isn't all Gcode the same and can't I run it on any machine I want? If you bring me a file meant to cut in inches that does not include G20 in it, you'll be cutting your file 1/25.5th scale on my machine. You would include G20 near the start of the file (and before any actual motions) to avoid that mistake because it's not unlikely that you would encounter this conflict, wouldn't you? It's the same thing for G90.1 and G91.1. You don't know if my controller is in absolute or incremental IJK mode, so just like you would declare the unit mode, you would declare the IJK mode near the beginning of the file. You don't have to, but it would be wise given that the controller itself is a variable in the workflow, not a constant. Assuming one Mach 3 controller is the same as another set up by a different person is not a good idea when you consider that the purpose of Mach 3 is to provide a user customized interface for CNC machines.
Go to your General Config settings and change your controller to absolute IJK mode. Then remove the G91.1 from the program. Now you will get the same incorrect result as I've shown below. I don't need to read the manual regarding this issue, as I've already demonstrated that I can produce both the correct and incorrect result based on which settings I apply to the software. My point was to show that it can produce an undesirable result without G91.1, and that's what I demonstrated. If G91.1 is left in the program, nothing I do to the controller regarding IJK settings can prevent the program from running correctly 100% of the time, which is why is should be left in there. Short version; without G91.1 you can get incorrect result; with G91.1 you can't possibly get an incorrect result.
There are other PC based controllers that also use G91.1, so who's to say that it's not an emerging standard anyways as machine parameters become more configurable than they used to be. My NUM 750 was stuck in French and would have had to be sent back to the factory to get changed to English. Now, you can probably select languages in the parameters menu in modern NUM systems. How much longer before you can select which IJK mode you prefer to use in the controller, and at that point what G code would they implement to control it?