Если бы вы написали API, который вызывается из Lua (который основан на 1, например, индексы таблиц начинаются с 1), применили бы вы то же правило к своему API?
Например, предположим, что в вашем API есть функция GetFoo(x, y), которая возвращает Foo с координатой (x,y). Начали бы вы свои координатные оси с (0,0) или (1,1) для API, предполагая, что в самой системе (скажем, написанной на C или C++, которые основаны на 0) эти вещи начинаются с (0,0) (поэтому, если бы вы использовали соглашение Lua, вам всегда приходилось бы вычитать 1 при извлечении чисел для таких операций из стека lua).