No, target doesn’t have to be same size. As an optimization, if size and datetime are the same, rsync will assume no change and will not hash at all (though you can force it to).
But it will definitely use hashes when size differs (unless forced to copy whole files, or copying between local file systems)
But it will definitely use hashes when size differs (unless forced to copy whole files, or copying between local file systems)