USB has two transfer modes, asynchronous, where things happen whenever they happen, and "isochronous" where you preallocate timeslots and get a guaranteed latency, delay and bandwidth as a result.
The basic framerate of USB is 10kHz, but nothing would prevent you from reserving multiple equitemporal slots to achive a higher frequency, so in theory you could have the computer drive the stepper directly over USB.
My guess is that nobody has done this, because isochronous USB transfers is the red-haired step-child in that family: originally it was specified for video and audio use, in the mean time we started to compress that, so it is no longer constant bandwidth and who cares about 0.1ms jitter when the other end of the skype is half way around the Earth ?
Therefore, writing drivers for isochronous USB, or finding programming examples for microcontrollers or USB controller chips, is tricky, and more likely than not, the information you will be provided will be wrong, bugridden and fundamentally misunderstood.
But you _could_ do it, if you wanted to.
It might even be a really smart way to do it, because you could play tricks with looping the send buffers on the host side, so the CPU would not have to care about all the actual pulses, only their frequency and duration.
OS kernel hacker and device-driver author in a different dimension.