Why didn't rsync made the copies on master and replica same?
Because rsync was running with —size-only flag.
IIUC the situation, the new WAL and updated pg_control file has been copied, but not updated data files due to which the WAL has not been replayed on replicas? If so, why the pg_control file is copied, it's size shouldn't have changed?
Because on master pg_upgrade moves $prefix/9.5/data/global/pg_control to $prefix/9.5/data/global/pg_control.old and creates new $prefix/9.6/data/global/pg_control without making hardlink. When running rsync from master to replica rsync sees $prefix/9.6/data/global/pg_control on master and checks if it is a hardlink. Since it is not a hardlink and $prefix/9.6/data/global/pg_control does not exist on replica rsync copies it. For data files the logic is different since they are hardlinks, corresponding files exist on replica and they are the same size.