Reliable delivery sounds like it should always win. For a live video call, it can be the thing that ruins the call.
Every transport protocol has to decide what to do when a packet goes missing — because on a real network, packets always eventually go missing. TCP (Transmission Control Protocol) answers that question by guaranteeing it will never happen invisibly: every byte is accounted for, retransmitted if lost, and delivered in the exact order it was sent. UDP (User Datagram Protocol)answers it by not guaranteeing anything at all — packets go out, and if one never arrives, UDP simply doesn't know and doesn't care. Framed like that, TCP sounds strictly better. It isn't. For an entire category of real-time applications — live video, voice calls, multiplayer games, DNS lookups — the thing TCP guarantees turns out to be less useful than the thing it costs to guarantee it, and engineers reach for UDP on purpose.