Ping is different because its packets are small. I’m not sure why curl works but not Caddy connections,
To troubleshoot network issues, you should reach out for tcpdump, udpdump, and wireshark. The captures extracted by tcpdump and udpdump can be viewed in Wireshark to see what’s exactly happening. That said, it’s a bit tricky with Wireguard because there’s a TCP layer (Caddy) connecting to the UDP layer (Wireguard interface), and on the other end the reverse is happening (UDP → TCP). You may be able to find signals of the root cause in the tcpdump without having to check the UDP dumps. If you’re not familiar with Wireshark, I suggest you learn it because it’s a handy tool. For your case, I found these resources that seem relevant and beneficial:
Wireguard Optimal MTU (github.com)
https://www.wireshark.org/docs/man-pages/udpdump.html
The links include references about the MTU because, again, when I faced something similar the last time, it was resolved by manually setting the MTU on the interfaces. Just checked my servers, and I have the MTU set at 1200. While investigating, I used tcpdump and Wireshark, and only saw “retransmission”. I replaced the LAN cords to exclude the possibility of damaged packets due to damaged physical layer, then decided to check the network config.