You would have to add a new event with each new sprite you want, but how is that different than adding a new entry to the array?
If you're concerned that picking the i-th slot in an array would be marginally faster than checking a variable x amount of times you can go a bit further to "optimize it" to be more array like. Note the use of quotations to signify that it may or not be any faster. It might even be slower. Here's how:
you can use the function object, and have calls like:
on function "arrayslot1" -> spawn a
on function "arrayslot2" -> spawn b
etc.
then, to create your random object, or object of choice, you go:
i=random(10)
call function "arrayslot"&i
(& is the concatenation operator in construct)
This eliminates the need to check a variable x amount of times.