0 based arrays is objectively the preferred way for me and not for historical reasons. I write a lot of low level graphics algorithm stuff, and 1-based arrays would complicate index arithmetic.
like now with everything 0 based having something like:
arr[offset1 * 32 + offset2]
would be the following if all my offsets would be 1-based and arrays would be 1-based:
arr[(offset1 -1) * 32 + offset2]
which is pretty arbitrary...