Не обязательно В том же LuaJIT классические массивы с 1 будут идти в array part, хотя в внутренностях LuaJIT массивы с нуля. Правила примерно такие: 1. Непрерывные числа 1-N — в массиве 2. Остальные числа — не специфицировано 3. Не-числа — в хеш-таблице