The SOCKS5 protocol, described by RFC1928 provides support for UDP.
To summarize, a client wishing to relay UDP packets through a SOCKS5 server must, at least:
I am answering to my own question: it's probably to avoid TCP mechanisms (packet retransmission, head-of-line blocking…).
For a local reverse tethering tool, it is not a problem though, so I implemented UDP over TCP without using SOCKS.