I had given initial though to something like a serial/SPI adapter, however, the data volume (250K bytes/second) seems far higher than I'd be able use a physical serial port. Am I missing something in your idea?
There are other issues with doing UART-SPI adapter.
With SPI, you have exact MCU control over data coming from the USB side, assuming the buffer is pre-filled.
With UART, you would need to add a handshake line, so the MCU can pause the buffer TX, until your MCU is ready.
Even there, the UART byte needs time to send, before the spi side can get valid data. The SPI side handshake needs further timing care to allow for that.
With SPI, you have true full duplex, and the clock
you provide means no creepage.
With UART, things get trickier. A Baud rate of 2.5Mbd gives you 8 bits every 4.0us, nominally your 2MHz SPI, but baud matching is not precise.
A skew of even 0.1% means every 1000 chars, you have one more or one less to manage in each direction.
It could work with a flow system that requested 1k or 10k bytes, that tolerates such skews with a small dead band.
eg 3MBd Duplex UART, with handshake lines to moderate agreed buffer bursts to 2MHz SPI average might work.
There, you would likely need a FT232H or similar HS-USB UART, as FS-USB USB UART's will be pushed to maintain 3Mbd full duplex, plus your custom UART-SPI bridge device will need development and tuning..
It's not
impossible, but unless you intend to make 10,000's +, you are probably better to work with more headroom/simpler.
FT232H/FT2232H can sustain 12MBd full duplex, and the FT4222H can manage SPI directly.
I'd look at UART-SPI only if FT4222H fails, and then maybe rework your SPI side to just be 3MBd UART+HWHS instead ? Is it Hw locked to be SPI ?