There is a reason why print services are implemented on the Desktop OS and not on the printer (well I'm sure many printers do have a shitty implementation): Because there's few Desktop OSes but so many printers. You want to split the work and implement each thing where it is most efficient.
Things a print spooler should do:
- Queue print jobs, be able to watch progress, cancel them.
- Manage permissions, maybe implement quota or similar.
- Offer desktop integration in print dialogues: N-up, shrink, duplex, and other common postprocessing features. With a print dialogue, a lot of manual labor of creating temporary files and editing them with a particular application is saved.
But let me tell you, it is terrible not being able to print from your system dialogue.
Then there is IPP and LPD/LPR. But those are either limited and sometimes the results not ideal (LPD), or again rely on a driver on your system to access the features of your printer (IPP) e.g. double sided printing, toner levels, print quality, etc.