В документации к lua 5.1, в
описании функции next сказано:
The behavior of next is undefined if, during the traversal, you assign any value to a non-existent field in the table. You may however modify existing fields. In particular, you may clear existing fields.
т.е. можно изменять или удалять существующие элементы, но нельзя добавлять новые.
В доках к lua 5.3 я такого замечания не нашёл (плохо искал?), но вообще, с практической точки зрения, добавление новых элементов в таблицу во время итерирования по ней, очень плохая идея.