Куда они идут, определяется самим кодом Lua - если файл объявляет его в глобальном пространстве имен, он переходит в глобальное пространство имен при запуске файла через pcall.
Самым простым вариантом было бы побудить любого, кто пишет файлы Lua, создавать свои собственные пространства имен (просто Foo = {}
в начале файла, а затем объявить функции как Foo.whwhat).
Если вы хотите заставить вещи в частном пространстве имен, вам придется немного усложнить вещи - в основном, найти то, что изменилось в глобальном пространстве имен после запуска файла, и вручную переместить новые элементы вместо этого в личное пространство имен.