Arrays can be efficiently implemented no matter where the index starts.
Keep in mind that C was/is primarily a language to write OS's and
other system level software. Hardware such as memory addresses, page
tables, disk sectors, etc. are all indexed from zero for very good
reasons. I would shudder to contemplate an implementation of the Unix
V6 kernel in a hypothetical C-with-one-based-arrays language.