The only real use I can forsee for an array like that is to be able to call a myriad of different scripts by passing the event_type in as the array index.
Eg, script_execute( scripts[event_type] );
The best guess I have is that the above line will be placed verbatim in each event that we want to do something in, and then the array will be initialized at some point to tell what scripts are fired for which events, if any. So even during runtime, if some state changes and we want the Step event to do something else, we would set scripts[ev_step] = scr_state2; which runs totally different code on the step event than scr_state1. This would enable us to radically change the behavior of an object at runtime (and do so one event at a time). It could make for a powerful state machine, but it limits our use of scripts to those which take no arguments. There are probably better ways to implement a state machine in conjunction with scripts, such as a switch statement, which would allow us to pass arguments to appropriate scripts, and get much more flexibility that way. An array also has the possibility of being called for an index which has not been initialized, or for the index to be out of bounds. It feels like leaving execution up to accident rather than design, which rubs me the wrong way. And if we're using array indices to reference scripts in the first place, I can't see why an enum/int wouldn't be a preferable array index, or why one would choose an array over a ds_map for such an application. Hell, even a series of variables would get the job done, one for each event's current script.