sfgml_spaces forces indentation using 4 spaces instead of tab characters. This is somewhat important when generating scripts for GMS1 because GMS1 is allergic to tabs and will remove all of them whenever it updates the script.
sfgml_hex (nowadays, sf_hint_const) will attempt to increase readability of magic numbers where available - for example, if your Haxe code had "0x10", it'll try to make GML code use "0x10" or "$10" as well.
Good reasons to target extension files instead of scripts are:
- Allows Haxe define macros properly (instead of having to resort to enums for constants, and nothing at all for getters)
- Allows to bypass IDE-specific issues (e.g. GMS1 compiler in >=1773 knows that array_create can have two arguments, but IDE doesn't, so you can't use that if it's in a script)