The Zero SPI driver is more buggy than I determined earlier.
The next bug I found is that calling transfer16() before calling transfer(uint8_t) will occasionally cut short the 8 bit SPI transactions. When I changed to all transfer(uint8_t) calls, the shortcut transaction went away.
Beware! The Zero SPI driver is crappy.
JJS