When we start indexing from 0, the only time we need to do a +/- 1 is when we need to index the last element. All other times (iterating, mapping) we don't need to.
Also, starting indices at 1 would change the idiomatic iteration to:
for (int i = 1; i <= SIZE; ++i)
I find that the <= and >= operators add more to my cognitive load than the strict relation operators < and > because there's an or in there. I don't find the alternative to that idiom any better:
for (int i = 1; i < SIZE + 1; ++i)
Your original argument was that we should make it easy for humans to understand, not computers. I think that starting indices from 0 is easier for humans to understand because it simplifies the code we must write and read.
Really?
How about dealing with strings?
"123456789" how many chars we have? 9
char[1] = 1
char[2] = 2
:
char[9] = 9
Now, let's try the C approach:
"123456789"
char[0] = 1
char[1] = 2
:
char[8] = 9
where is char "1"? at zero index!
how many elements we have?
last index plus one!
see? there is already confusion in place, or as you say, more code and less clear...