A 16 MHz Arduino can handle recieving data at high speeds, see Section 20 of the datasheet for
"Examples of UBRRn Settings for Commonly Used Oscillator Frequencies"
where it shows settings for 250K, 500K, 1M bps rates.
At 1M, that uses just about all the processing power. I have a project where I used SPI with 8 MHz clock to send out 45 bytes to shift registers - had to turn off interrupts and use NOPs to time out the 17 clocks for each transfer in order to send out data that fast to meet a 20KHz update rate, with just a few uS at the end of every burst to update the array pointer for the next row of 45 bytes. That achieved nearly a 1Mbps rate, just over 1uS per byte sent out.
You can send it the burst of data from a PC, have the Arduino store it in array, then send it to the WS2812Bs. It will take ~ 1000uS to receive 1000 bytes, then longer to send the data out again at 800KHz. (20% longer? more?)
I don't think you can send it out as it comes in tho, there's not enough processing time in between the receiving and meeting the strict timing created using assembly code for the WS2812Bs, which need a burst of cycles to send out the 1000+ bytes in order for the parts to see a steady stream and not go into refreshing their output if they see a longer break between bytes. Each WS2812B needs 3 bytes of data.
Uno - 2048 bytes of SRAM
1284P based boards - 16K SRAM
2560 based boards - 8K SRAM.