OS X and Windows operate completely differently from one another... this means that the problem could not just be something on the drive, but Windows might not have noticed an error simply because of how it was designed. This doesn't mean Windows handles errors better at ALL, just that in this particular case, it hasn't done anything where it's noticed this bad spot on the drive and reported an error to you.
the best way to ensure the entire disk is cleaned of errors is to erase it with disk utility. In Disk Utility, select the drive (not the volume) and then click the Erase tab. There's an OPTIONS button: click that, and choose ZERO ALL DATA.
This will take a little while, maybe an hour and a bit (depends largely on if you're using USB or firewire).
When you erase a drive, the data is still there and the computer simply writes in that the entire disk is available. If there's, say, a bad sector, it will still be bad. Re-writing another file won't necessarily fix this. Zeroing all of the data wipes the slate.
After it's zeroed, use the restore program and go from there.