Apparently cygwin "stat" can sometimes return a uid or gid of -1. Since the "chown" syscall takes -1 to mean "don't change this field", rsync silently fails to preserve the source ownership. This problem came up on the rsnapshot list:
Rsync should issue an FERROR_XFER in this case. I was inclined to have the receiving side do it because the limitation is in the receiving side's chown call, but it also looks like -1 has a special meaning to the uid-mapping code, so maybe the sender needs to catch the value before it causes trouble there.
This is now fixed in the git repo.