I don't think thats a good idea - why should a player lose a (say for example) CV that's sitting in New York Harbour?
This is a fair point, but the attack on Pearl Harbour is unfortunately a classic example of where the desire to see a "historical" game (which I generally interpret as "a game flow that looks and feels broadly like WW2") clashes with player freedom and 20:20 hindsight. BBs that happen to be in New York harbour sinking may be odd, but why would a US player not put all their BBs on the East coast for early December 1941? Fixing events to history has a fundamental problem, here - we get the bizarre picture of the US forces and government running around saying things like "Move it along, guys! We only have 4 days and 15 hours until the Japanese make their surprise attack, and we have to be ready to be surprised in the least damaging way possible!"...
The bottom line is that there are three options:
1) Force the event to happen, affecting the units that were affected historically, wherever they are when the event fires.
2) Let the event affect only the forces that are in PH when the event fires - chances are this will be 'nothing' for a player USA (and whatever you program the AI for with a non-player USA). You then need to decide if a Japanese attack that has little or no effect will actually trigger war, or is that just too gamey to allow to live?
3) You set up an event or an AI policy that is not tied to the historical timeline, but looks for a target of opportunity that is (a) within range of the Japanese fleet and (b) has a plausible chance of the Japanese staff believing it will force concessions after a short war.
Of these, (3) is very complex to set up and (2) is horribly gamey - so (1) is the (imperfect) compromise.