Die null basierenden Listen sind wohl der Hardware geschuldet bzw. historisch bedingt. Ein Byte Array im Speicher fängt eben bei 0 an. Dann kann man schön in einer Schleife durch iterieren. Siehe dazu auch die Char-Arrays von C. Ein ShortString fängt ja auch bei 0 an. Das ein String bei 1 anfängt ist so auch nicht richtig. Zu einem String gehört die Größenangabe und die liegt im 0ten Byte. Also alles gut und konsistent.
Es ist eben so, dass manche Dinge historisch gewachsen sind. Siehe auch als Schleifenzähler das i. Selten sieht man da einen Schleifenzähler, der was mit der Schleife zu tun hat. Historisch eben. Man muss eben so was manchmal im Hinterkopf haben. Aber das ist auch Reallife so. Siege Tastaturen von Taschenrechnern und Telefonen. Da hatte wohl noch niemand die Idee, dies zu vereinheitlichen. Oder die Uhrzeit. Die Uhrzeit basiert auf den 60'er System. Die Franzosen haben es nach der Revolution mal mit dem Dezimalsystem probiert. Das Ergebnis dürfte klar sein.
Obwohl das Dezimalsystem bei Berechnungen mit der Uhrzeit vorteilhaft wäre. Genauso die Gradeinteilung des Kreises.