I think most programmers who start on 0-based languages just accept it as writ. But I started in 1-based Fortran and Matlab - even 10 years after switching exclusively to 0 based python and C++, I still cannot understand why 0-based exists at all.
It's an artifact that gets compiled away, and it's SO much more intuitive that the first thing is the first thing, and the nThingsth thing is the last thing!