SPI transactions in Arduino
I have a lengthy reference question about SPI which may help you.
To transfer outwards you do not need to use an interrupt. Nor is it polled. The data is simply placed in the SPI register and the hardware clocks the data out at the defined SPI rate.
To transfer inwards you are just reading the register. However to know when you need to read it, you would probably put the reading inside an interrupt routine.
I suggest you read the link above, and then if you want, you might expand your question more.
The source for the SPI transfer which I think applies to the Atmega2560 is as follows:
// Write to the SPI bus (MOSI pin) and also receive (MISO pin)
  inline static uint8_t transfer(uint8_t data) {
    SPDR = data;
    /*
     * The following NOP introduces a small delay that can prevent the wait
     * loop form iterating when running at the maximum speed. This gives
     * about 10% more speed, even if it seems counter-intuitive. At lower
     * speeds it is unnoticed.
     */
    asm volatile(&quot;nop&quot;);
    while (!(SPSR &amp; _BV(SPIF))) ; // wait
    return SPDR;
  }

You can see that there is brief polling (the &quot;while&quot; line) for the register which the processor maintains to show whether the transmission has ended. Then the register is read and returned. So yes, there is polling there.
Now if you use an interrupt (see link above) then you will know that the flag has been set, and therefore there will be no delay (in the polling).