I2C is for connecting integrated circuits together on the same board - essentially it was created for making television sets - so it's short range, and relatively complicated to use.
UART is for relatively long distance communication, depending on speed and design hundreds of metres, and is very simple to use.
If you're wanting many devices on the same bus, and fairly close to each other, then I2C is probably the way to go, assuming you can set them to enough different addresses?.