It seems these exports are needed.
It turns out that Module::buildVisibleModulesCache just recursively calls Module::getExportedModules. So without the self-export, the submodule doesn't export anything and contributes no exports, but if it does export itself, then it contributes itself to the list of exports.
In this case, e.g. #include <x86intrin.h> will trigger module intel to be imported, and since that module imports wmmintrin.h (through immintrin.h), then the aforementioned situation triggers.