FAA Order 7110.66E says
Code "0000" should never be assigned or used.
Code 0000 must never be assigned
However, NASA recommends that crews set 0000 after landing to help detect when a clearance has not been received.
Resetting the transponder to 0000 (four zeros) after landing can help you, or the next crew, detect lack of a PDC. Additionally, should a flight depart without setting an appropriate IFR code on the transponder, ATC will be more likely to quickly detect the problem. (Setting 1200 on the transponder may lead a controller to believe the target is normal VFR traffic.)
The idea is to set a code that could never be correct. If you set 0000, a casual glance at the transponder will indicate "Some part of our preflight did not get accomplished" rather than "Ah the other guy must have set our code already".
I set my transponder to 1200 after IFR flights, and am considering changing to follow NASA's recommendation of 0000 instead, but I don't want to create headaches for ATC if they see it one day on their scope.
Why should you never squawk 0000 in the USA?