The very name UART, being an Asynchronous communication method, is that it is not SYNCHRONIZED with a clock. Rather, unintelligent UART methods only rely on being set with the same parameters such as baud, parity, and stop bits. Intelligent UARTs(not an official name, just one I use) can look at a frame of data and determine it's parity, baud rate and stop bits by itself, but it's only used in more complex devices.
EDIT: It's also important to mention that the I2C interface supports clock stretching, where devices that need more time to receive and process data can pull the clock line low (due to being designed to be open-drain) to tell the master device that it's not ready. Though I2C can theoretically support 127 devices, your average I2C slave device can't have it's address fully configured,