because real P2P is hard for realtime stuff. Be it timing or network port forwarding issues.
Timing issues can be worked around and GPS modules are cheap.
NAT problems aren't usually that bad. Only a minority of networks use symmetric NAT implementations, with most seeming to be using port-restricted cone NAT (EIM/APDF), which can still communicate with any other NAT implementation using endpoint-independent mapping (EIM). Most CGNAT implementations that I've encountered use EIM, with some also doing endpoint-independent filtering (EIF). Between UDP hole-punching, UPnP, NAT-PMP, and IPv6, it's usually possible to establish a P2P connection between 2 endpoints.
A game could use a hybrid client/server and P2P model, with the option to run entirely P2P while accepting its limitations.