We've already established that os.fsync() is required in at least some cases on Windows. It seemed to me that you were trying to construct some other cases (possibly involving Cygwin) where that wasn't necessary.
Cygwin doesn't appear to need fsync() so long as you stick purely to Cygwin tools in all processes -- Cygwin appears POSIX-like in that respect.
But Cygwin runs on Windows, and fsync() is still needed in Cygwin Python programs if native Windows utilities (including the native Windows Python) are to see correct current file sizes too.
If os.fsync() is missing in Cygwin 2.3.1 (I don't know whether it is, but suspect that it is), then problems follow from that. A specific example is ZODB running under Cygwin, while the ZODB live-backup script repozo.py runs under native Windows Python. If the former can't do an fsync(), the latter can't know the correct current file size.