as with many IO devices such as CAN, UARTs, ADCs, etc you can poll the interface regularly to see if data has arrived or you can get the interface to interrupt. The problem with polling is that if you don't do it often enough a message can arrive before you have read the previous one. Depending upon the number of buffers in the interface you can loose data. Interrupt programming is more complex.
For slow IO polling is usually fine, very fast use interrupts, e.g. driving a PIC24 UART at 921,600 bps