Composite HID gamepad descriptor works on Windows but not on Linux
After some hours of poking around in debugfs and the kernel sources, I figured it out.

As it turns out the descriptor was fine, the problem was that udev (for whatever reason) decided the create the device file with root-only access. After fixing this, my device now appears as a 56-button 8-axis gamepad, which is not quite what I wanted, but still close enough.