Yup, pretty much this.
It's trivial to implement a serial connection in a microcontroller. All you need is a level shifter like the dime-for-dozen MAX232 and you're set. For USB, this requires a lot more implementation overhead (not to mention getting a genuine UID if you want to ship it), and literally EVERYONE who has ever even dabbled in microcontroller programming knows how to deal with a MAX232. Pushing information down the serial line is like the Hello World of microcontroller tinkering.
That's why you can still get PCI-E serial controller rather cheaply. And, lo and behold, almost all of them contain some variant of the MAX232.