NOT true...
array size is importand to set more then 1 only in few cases like
Timer
UnitGroup
PlayerGroup
If you need 5 timers for example you have to set Timer array to size: 5
but always set array size to 1 for Integers, Reals, Locations, booleans etc
If you have TempInteger array variable, you declare it to size 1.
You can use in triggers for example TempInteger[5] or TempInteger[2000] (up to 8191)
zibi
You can still get around that as long as you create the objects yourself, can't you? You may need to use JASS to do that, though. I know I've used CreateGroup() quite a bit, anyway.
The thing is that the arrays are always gigantic (0-8191). Setting the size in the world editor just causes it to initialise up to that many indexes. It is important with the non-primitive variables since you can't just start adding units to a group that doesn't exist, but primitives are all basically just integers so it doesn't matter what they start out as.
Units as nulls are handled nicely with almost all (or maybe all) functions, so maybe this is why it doesn't matter if you define them or not.
Anyway, the reason to not set their size is because setting the size adds a loop to the map initialisation function that loops up to the size you define and sets the values for all those indexes. This is a lot of things to do. While it is probably mostly negligible in terms of how long it takes, it is basically wasted time.
The bigger issue, though, is the operation limit. Every time a function does something, it adds an operation. When you hit the limit, the game aborts the function. I think it is to prevent infinite loops or something like that. If you want to test it out, try making like 10 arrays with size 8000 in your map. The variable initialisation happens before your trigger initialisation, so it is possible that your initialisation function hits the operation limit and aborts before it even builds your triggers. You get some pretty odd errors when this happens.