It seems that when comparing the custom versions for a replay (in the "operator<<" defined in ReplayTypes.cpp), the value retrieved from the FCurrentCustomVersions is not the value set at runtime, but the one originally used when registering the FGameNetworkCustomVersion (i.e. FGameNetworkCustomVersion::LatestVersion).
Setting a custom GameNetworkVersion at runtime does not affect whether a client can connect to a server.
At runtime, call FNetworkVersion::SetGameNetworkProtocolVersion to set a custom value for the FGameNetworkCustomVersion.
Begin recording a replay.
Attempt to play back the replay.
Expected: the versions would match, and the replay is played
Actual: The replay is unable to be played, with the following error:
"LogDemo: Error: Replay was saved with a newer custom version than the current. Tag CC400D24E0E94E7B9BF9A283DCC0C027 Name 'GameNetworkVersion' ReplayVersion <Custom Value> MaxExpected 0"
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-195972 in the post.