The fundamental reason why zero-based is so popular is because of the historical popularity of C language. It has thus infiltrated the mindset of the entire IT industry.
C was the first major programming language to provide direct access to the lowest level of the computer, i.e., memory addresses. And as you pointed out, the language’s handling of arrays directly reflects how it works “under the hood.”
So programmers have been trained to think at this low level, even if it isn’t necessary. For most of the software we write in this world, low-level programming is not needed. That’s why prior to C’s appearance, FORTRAN and COBOL dominated the software industry. And for a long while, Pascal and Smalltalk were also extremely influential.
The fact is, the more enlightened programming languages cater to how regular human beings think and communicate in the real world. Regular human beings do not talk about the zeroth item of a collection; they refer to the first item. They use ordinal numbers.
“High-level” programming languages should serve regular human beings, not kowtow to the computer architecture. With higher-level generation languages (e.g., fourth and fifth generation) that support higher-level abstractions, human programmers are further removed from the hardware level. And this is a Good Thing.