A major reason has to do with the way defense programs are typically constructed by the prime contractor. A smart prime contractor will assign subcontracts with an eye on politics, by spreading the wealth to as many subcontractors in as many Congressional districts as possible.Um, is there really any doubt that we'd have a more effective (and efficient) defense program if we just did away with Congressional districts? Oops, did I say that? My bad, need to protect "local interests" and all. On a related vein (artery, really), I was reading Andrew Moravcsik's Newsweek piece this morning about how no other countries want to adopt our system of government, and found myself just flabbergasted. Really, what's not to love about a lower legislative house in which, theoretically, one party could win a majority of votes nationwide and still get only 1 out of 435 Congressional seats? (If, say, the Republicans won every single race by one vote but lost San Francisco by 435 votes. We do love Nancy Pelosi, after all.)
\This means that any cut to this program affects a large number of jobs in a large number of Congressional districts, and that any cut is likely to be received with a broad and vocal Congressional response. So while defense programs may be very easy to terminate in practical terms (every government contract carries a "termination for convenience" clause), they are extremely difficult to kill for political reasons.