The programming significance is that an array is merely a pointer to the start of your things. To get an individual element, it timeses the index you give it by the size of one element. Thus, if you have an integer, which uses (I think?) 4 bytes in WC3, to get the first element, index 0:
(place of pointer) + 0 * 4
index 1:
(place of pointer) + 1 * 4
And so on. That is why they start at 0, not 1. If they started at 1, the pointer would actually refer to a place (size of thing) units backwards. Which means when you try to get the address of something, you have to add or subtract and then everything turns into a mess.
But mostly OCD. Still, people seem to use 1 because they think things should start at 1 and that bothers me because they dont appear to know the math behind how an array works.