rsync can succeed at copying nothing
Exit status zero from a pipeline is the status of the last command in it, and the last command is usually harmless.
The line looked careful. It ran the copy, piped the output to tail so the log would stay readable, and checked the exit status afterwards.
In a shell pipeline the status belongs to the LAST element. tail succeeds on an empty stream. So the check read tail status, tail was fine, and a copy that transferred zero bytes went straight through to the line that says the files arrived.
The fix is one option. Turning on pipefail makes the pipeline report the first failure in it, and the check that was always inert becomes real. Then go and find every other place in your codebase written the same way, because there is never only one.