There are a few gotchas with GRO, although I'm not sure they're applicable to Wireguard - in particular, there used to be a line in the kernel vswitch code that dropped a packet if it had been processed by GRO. A while back I spent a long time debugging a network problem caused by that particular "feature"...