I'm sad to say there is no easy answer to how much we need to throttle Teensy 4.x transmit speed. Windows is sending an IN token to tell Teensy it want more data. Then it is sending an ACK token after Teensy transmits the data, to indicate successful reception.
Whether intentional throttling belongs inside the low-level MIDI code or high-level application (Arduino sketch) is a good question.
Unfortunately, the only way to make this 100% reliable is to pace your transmitting. For sysex messages of 384 bytes or smaller, at 480 Mbit/sec speed, looks like sending about 4 per millisecond is pushing the limit. But this isn't any sort of confirmed limit, only my experimental result with MIDI-OX and SendSX running on a rather clean Windows 10 install (almost no other software installed, nothing else running).
Thanks for your efforts Paul. Are you nevertheless planning to modify usb.c since several users in this thread have reported success with Rolf's suggestions? If so, is there a way to eliminate its current flush command(s) but then still call a flush before returning so you don't need to add it in the user code? I haven't looked at usb.c recently so maybe that wouldn't work. But if it would, maybe it could be done only for sysex transfers to avoid slowing down other midi commands. Or maybe introduce a second USB_send function that users could call for sysex only?