It seems to me that replacing the binary so that the same argv0 is forked would lose the "working" version of the binary, in case there were failure during child init. The fs would have the v2 binary, and the running process would have v1. Wouldn't potential crashes in v1 (latent bugs, overload, ...) cause systemd to attempt to restart and see only the v2 binary?
Also, what if surrounding environment should change, e.g. local metadata files, secrets, or even the systemd unit file itself, to define new secrets there (LoadCredentials, ...) or modify startup behavior? Do those deployments still cause connection dropping?