What we are seeing with UART -> SPI -> I2C is evolution!
This is my take on this.
UART's produce the asynch format which harks way back to early last century in the teleprinter. As found in every post office etc. at the time.
These were mechanical behemoths and each bit was used to set code bars via a rotating motor - synced to the mains.
The code bars would only allow one "type arm" in the basket of characters to operate at any one time.
When the last bit was received, the hammer came down, literally, and the selected character was slammed into the platten through a ribbon.
Being a mechanical beast, this was also a driving factor behind the qwerty keyboard as we know. The characters were deliberately randomised to minimise potential clashes as the mechanical type arms flailed backwards and forwards.
Great stuff!
Synchronous serial comms were then developed to help with the potential of async to lose synchronisation.
Synchronous modems provided Tx and Rx clocks, which of course clocked the data through. These clocks tended to run continuously, and "frame bits" were sent on the data to keep things synchronised.
Motorola then developed SPI for it's micro controller devices, which had limited pins.
SPI has the novel concept of "clock stop" where the clock is only sent when data is sent.
This simplified things greatly for the original purpose of exchanging data from one microcontroller to another. 8 bits could be reliably exchanged with only 3 lines.
However expansion of connected devices unleashed a flotilla of chip select lines, usually requiring 1of8 decoders, and therefore more pins/lines to drive these.
So Philips many years later developed I2C where each device is addressable, and the address to operate upon is part of the data stream sent. So the bus reduces back to clock and data and the world rejoiced when several peripherals were to be attached to a micro.
I2C is however more difficult to work with if all you want to do is a simple "port expander".
Common TTL style shift registers can easily be bolted onto a SPI port to provide extra I/O lines, cascaded in series for more bits if desired!
So each form still has it uses these days, and depends upon what you wish to achieve.
FWIW, my first interfacing effort to a micro was driving a "Model-50" teleprinter to a 6809 based computer. Worked a treat, and yes I used a UART to do the deed.
Nowadays I'm leaning towards CAN as it inherently allows multimaster operation with an inbuilt message priority scheme. And yes, it too is another form of serial data!
Cheers, Ray