So does this mean that device drivers are what actually use SPI serial comm? If so, SPI comm is available to user applications, so why use device drivers?
Many reasons:
You might want to write code that can use various different types of serial communications without having to change the higher-level code.
You might want to moderate access to the serial port from different applications.
The serial interface may be most efficient with interrupts and you need to handle interrupts in low-level code.
And so on.