I don’t get why they went for NFSv3, v4 is quite old and I can’t think of any reason why you would choose v3 over v4.

Because it’s harder. It’s a stateful protocol and has a lot more features

NFSv4 is a hard beast to implement correctly, with a lot of protocol surface (state, compound ops, delegations) for benefits ZeroFS mostly gets through 9P with extensions, over a much simpler protocol: https://www.zerofs.net/docs/9p-extensions. NFSv3 stayed in ZeroFS mostly for client compatibility.