It's not a hard limit. It's an artifact of the HID specification. Nothing hard about it.
Note that this is different than the interrupt based PS/2 specification since Make/Break codes are not needed. All the host does is compare states of packets.
The HID specification only talks about the 6+mod keys max in its
BIOS compatibility mode.
The idea is that the BIOS asks the keyboard to switch to this mode so it can simulate PS/2 when the OS isn't smart enough to do so (e.g. a DOS and Windows 3.11 combo) without knowing the ins and outs of USB HID. Since this mode is very strict, the BIOS can just skip all bytes in the packets which it doesn't know and extract the only important thing: scancodes.
Keyboard makers *could* have larger packets if they declare and send them (USB HID actually supports this because a device should offer this information when the host asks for it). The catch is that you now have to support two modes and hope that the OS' drivers actually read the information about the larger message format so they can handle the increased input.
Linux seems to support custom HID packets, though I don't know anything about it on Windows. MS' own X4 seems to do it though.
Having two simulated keyboards with each a BIOS compatibility mode is the most back-ward compatible choice. However, it is nothing more than a kludge.
EDIT: Toned it down a little.