Because, simply, 3D printers are surprisingly easier right now. For context on the equivalent, a consumer FDM 3D printer right now is about the same level of complexity as a dot matrix printer was in the 80s:
For a dot matrix printer, the paper was moved under the printing head using sprocket holes on the side of the paper, so you had an exact known movement between each hole (so this would be the same as 3D printers that move the bed under the nozzle), and then you ‘only’ had to scan across to print what you needed. You used a ribbon infused with ink and strike the ribbon into the paper at the point where you want to put ink down. This is roughly the same motions as setting the 3D printer nozzle to the print area and depositing filament.
Modern inkjet printers have resolutions of ink printing that vastly outresolve dot matrix printers of old (anyone who’s used a dot matrix to print ‘pictures’ knows this). They’re complex beasts partially because they need to be for this accuracy, and partially to save money on making the physical printer itself.
Modern laser printers are technically a bit simpler because once you’ve nailed the ability to replicate a pattern onto the charged drum, getting the toner to attach and thermally sealing it is cakewalk. For the people watching, however, there’s a bit of lifting on the “once you’ve nailed”. There’s your complexity handwave.
Honestly, if I was to try create a printer today, I’d go down the route of mimicking a dot matrix first. Print ribbon isn’t absurdly expensive (OKI still make a few models, so you could adapt one of those), and you can either use PCL or the OpenXPS printer languages. DO NOT INVENT YOUR OWN PCL. (This is why inkjets are so terrible, as nearly every goddamn manf has their own PCL, but also why lasers are so great, as every decent laser just implements PCL6 and OpenXPS and calls it a day)
Get this all working and then you’ll have a better understanding of how a printer works on the software side, and a good understanding of the complexities that go into printing, but without taking on a physical printer type that is really difficult (eg, starting with ink or laser or thermal is maybe not a good idea if you’re only just learning how laser printers actually work).
But yeah, smaller easier steps rather than trying to nail something instantly commercial that solves too many problems is going to be the right path to take for now.
(oh and for drivers, just make sure you work with something supported by the OpenPrinting section of Linux, as they maintain printer drivers for a lot of OSes, but also if you just support PCL6/OpenXPS then you can even get away with being supported by a generic print driver!)