TCP offers a single reliable globally ordered stream.
UDP offers unreliable packets in arbitrary order.
What people usually want is to send whole packets(or multiple streams) in arbitrary order with configurable reliability.
TCP and UDP offer neither but UDP has the least restrictions which makes it the only protocol on which you can implement your custom protocol.
TCP offers a single reliable globally ordered stream.
UDP offers unreliable packets in arbitrary order.
What people usually want is to send whole packets(or multiple streams) in arbitrary order with configurable reliability.
TCP and UDP offer neither but UDP has the least restrictions which makes it the only protocol on which you can implement your custom protocol.