Why don't I need device drivers for a UART to communicate with a Linux box but need device drivers if USB is to be used for communication?
It does need drivers - but you are using a standard protocol (USB CDC), so Linux already has the drivers built-in. The USB/UART chip knows how to speak the USB CDC protocol, and so does Linux.
If you have your own chip that speaks USB (but not CDC) then you will need to give Linux a driver so it knows how to speak the chip's protocol.
You could also use a standard USB protocol - like CDC or MSC or any other standard device class that your computer has a driver for. Then, your computer can use that driver.