There is at least one simple and hard to overcome reason for this: UART revceivers need to oversample the input data with a factor 8 to 16 higher clock frequency. As a second point, UART is mostly used as peripheral interface while SPI is dedicated to "interchip" connections, rarely connecting beyond PCB boundaries.
I2C is an interchip interface as well, at best connecting multiple PCBs over short distance. But I2C low data rates of 100 and 400 kHz are fixed by specification, the supplementing Hs speed is supported by very few chips and rarely used. I2C is used for connections without high throughput demand.
It's possible to run high speed UART interfaces with programmable logic devices, if you have a high frequency clock available, e.g. provided by an on-chip PLL.