8x4 Bicolor LED Matrix Question

I think you need a pair of SPI.transfers for each digit:

digitalWrite(ssPin, LOW);
SPI.transfer(0);
SPI.transfer(0b00001111);
digitalWrite (ssPin, HIGH);

That's what works for me anyway.

Yes, the data stays displayed until you change it. You can do stuff and set a flag,
check the state of the flag each pass thru loop and send the data if something changed.
Or make the update a function that you call only when something has changed.