Потому что с такими полями можно работать через метапрограммирование.
Положим, вашей процедуре передали какую-то запись. Вам глубоко параллельно, что это за запись, где она объявлена, и экспортирована ли сама. Но вы получите доступ к тем её полям, которые помечены как экспортированные.

Т.е. экспорта на всю запись нет - никто за пределами модуля не может использовать сам тип (т.е. объявлять его экземпляры), но работать с разрешёнными полями тех экземпляров, которые гуляют по системе от модуля-владельца - можно.