The A in UART = asynchronous. This refers to the free running 16x clock generated by the receiver to look for the leading start bit edge then choose the middle of the bit using a 1x inverted clock( = bit rate) now synced to that edge. Since there is a small frequency difference, the clock phase slowly drifts early or late but no more than typically than 100ppm*10bits=0.1%.
This is done for each word with start and stop bit as a word frame check. This accommodates some bit shift due to signal distortion and clock frequency difference between the sender and receiver which are generally well within 100ppm.
Since it is already binary logic determined by the Rx threshold, which is the same as TTL @1.3V, while the signal is +/-V, there is no need to sample any more than this 16x f, nor any savings in silicon to sample less than this. So a UART 16x Clock has become a de facto standard. The exception is the highest bit rates, where an only 8x clock is available in some cases with a slight loss in the clock to data edge margin for error due to all the effects of bit phase shift.
If you were wanting to have synchronous data without start and stop bits then a PLL SERDES clock sync would be used which normally uses a clock at the same rate as the symbol rate. This is followed by a search for a unique frame sync pattern then it can decode the stream.
{ feel free to search any keywords, new to you, on the web.}