Hi Evan,
An alternative would be to checkout, touch all the .o files, then run Shake. Shake could change the files when it decides they were clean, but it feels pretty yuk and is more expensive than it otherwise should be.
Long term, faking these things never really works, so even once you find a workaround, getting the correct fix into GHC is a good plan. I think I've been bitten by this behaviour too.
Thanks, Neil