One of the most common problems I find when switching between testing on the simulator and testing on the device is the fact that the device’s file system is case-sensitive, whereas the simulator uses the user’s default file system which generally isn’t.
This can throw up mysterious bugs where things appear to work fine on the simulator, and then fail unexpectedly on the device because one or more files are actually being referred to by the wrong names (or rather, the right names, in the wrong case).
It occurs to me that the simulator could instead create and mount a private DMG disk image to use as the simulated device’s disk. It would then be able to format this image using a case-sensitive file system, which might provide a more realistic simulation of an actual device’s behaviour.
For what it’s worth, I’ve filed an enhancement request.