TCP includes congestion control. It will limit traffic to prevent packet loss. UDP just sends all of the packets you request and hopes for the best.
Even cheap hardware these days can exceed 10 Gb, especially with traffic generators like iperf. Buffers quickly fill up when link bandwith is exceeded, resulting in drops. No congestion control for UDP means it will keep sending packets through already saturated interfaces, which ruins goodput.
This is like a road half-clogged with crashes of speeding maniacs, with zero traffic management, and complaining that it doesn't hit the theoretical peak cars per hour.
Limit iperf's bandwith. TCP's 8.8 Gb is probably realistic, but let's be optimistic and try for Ethernet theoretical maximum:
iperf -u -b 9750M