The "standard" answer (and it's rather good as well :-) ) is that if
a module was allowed to use _any_ kernel symbol instead of the
officially exported ones, we would all risk that a "popular" module
might lock on to an internal symbol that is too low-level.
This would lock the kernel development, since all modifications to the
rest of the code would then have to be sub-optimally adapted in order
to "preserve" this symbol.
The set of officially exported symbols might not be perfect right now,
but it is at least an attempt at an official kernel interface.
There are other reasons as well...
Hopefully we can arrive at a solution for dosemu that won't require
a special version of insmod.
Bjorn