Tailscale on iOS has always been highly unreliable for me, while the regular Wireguard app just works.
Are you having issues with it when it's always connected?
Meanwhile with wireguard: It just works. Every time. Every where. Unless someone blocks UDP.
Its better than it used to be.
But the fundamental problem is that the Wireguard app is a simple GUI around `wireguard-go` built as a static C library via cgo. But Tailscale uses a fork of `wireguard-go` and then adds control client, DERP, NAT traversal etc. on top of it.
So there's quite a lot of "bloat" on top of the Wireguard code in Tailscale iOS and therefore your problem might not be Wireguard vs Wireguard implementation question but something happening elsewhere in the Tailscale code.