It's inelegant to have to explicitly export things when there is already a "local" keyword. Why not export everything non-local by default?
If that is not possible for some reason, why not initialize an empty table for each module, assign it a reserved name, and export it implicitly? I imagine something like this implicitly wrapping each module:
local module = {};
<<module code>>
return module;
Version: unspecified
Severity: normal