For the same reason that ichains are collected into a union: to force
the compiler's hand into getting the various members to overlap in the
common prefixes.
This doesn't affect day-to-day use, but it does change the types of the
things which are actually exported.