A helpful person from this list gave me the clue needed to sort this out. They suggested summarizing it here for the possible benefit of a future person in my situation. The issue was that while our Bullseye servers were fully up-to-date, they are also quite old. They were originally installed back in the era when "--manage-gids" was not the default setting in /etc/default/nfs-kernel-server, and we have carried that forward ever since. In the case of gid mismatches, that flag essentially governs whether an operation will use the client's gids for a uid (if not set) or the server's (if set). Disabling that flag (for newly-installed older versions) or using the equivalent "manage-gids=n" in /etc/nfs.conf in the new version of nfs-kernel-server gets us the behavior we need. No one who has perfectly synchronized uids & gids between client and server would ever notice this, but since that's impossible in the workload I have to support, it makes quite a difference to us. Thanks!