Я думаю, что это повелось ещё с тех пор, когда языки программирования только начали придумывать. Возникло несколько основных алгоритмов интерпретации написанного кода, то есть понимания введённых инструкций языком программирования. Введённые инструкции хранились в определённой форме. Я смотрел в некоторых системах как они хранились. Вообщем там машинные слова хранились в таком виде, что хранилось слово не целиком, а без первой буквы. Вместо неё хранился какой-то код, не являющийся буквой. Например слово PRINT хранилось в таком виде .RINT. И один и тот же алгоритм применялся во многих разных местах, как собственно и микросхемы от intel. Возможно цифры и не использовались в начале имени переменной всвязи с неудобностью этого при использовании данных алгоритмов. Потом это вошло в правило и привычку, поэтому так и повелось. А может быть потому, что если бы можно было начинать с цифры, то кто-нибудь мог бы составить переменную из одних только цифр и возник бы небольшой казус при чтении программы.
Например была бы операция присваивания:
34=56
или
89=89
Возможно математики, участвовавшие в создании языка программирования, когда увидели такие операции, объявили о непримиримом несогласии с такой возможностью, заявив, что это оскорбляет математику.
Ведь можно было бы записать переменную с именем "5" как:
5=2*2
И выглядело бы это как будто дважды два пять, а не четыре.