This seems to be a problem in Binder.LayoutMedia. If fileTransfer.Source == fileTransfer.Destination (file system rules: case insensitive compare, .. in paths, etc.) then the operation should be skipped. Instead light deletes the file when attempting to copy.
"D:\tools\Wix3.0\bin\light.exe" -cc "'D:\output\Setup\release" -reusecab -out "'D:\output\Setup\release\MyApplication.msi" MyApplication.wixobj -v
...
Laying out media.
Copying file 'D:\output\Setup\release\PSample.cab' to 'D:\output\Setup\release\PSample.cab'.
The destination file 'D:\output\Setup\release\PSample.cab' already exists, attempting to remove it.
Copying file 'D:\output\Setup\release\PSample.cab' to 'D:\output\Setup\release\PSample.cab'.
The system cannot find the file 'D:\output\Setup\release\PSample.cab' with type ''.
build.proj : light.exe line (0, 0) : The system cannot find the file 'D:\output\Setup\release\PSample.cab' with type ''.
Logged In: YES
user_id=2057970
Originator: NO
I wasn't able to reproduce this using WiX build 3.0.4124.0.
I used the following commandline (where cabcache is the absolute path to a directory): "light -cc cabcache -reusecab -out cabcache\valid.msi valid.wixobj -v". I couldn't reproduce a failure.
If you believe this is still a bug and have more data about how to reproduce it, please reopen with comments.