In fact this post should be named "Why anyone shouldn't work long hours". Face a problem for long hours, fighting a deadline it will not help, this should common sense, if not, try read about "Sleep-dependent memory consolidation".
My point here is not about problem solving, performance and accidents, I think these topics are well documented. But I want to add just one little information on why "long hours" are a problem.
What happened to me this week is that I had to solve some personal matters, in fact, renew my driver license. It took me almost a half of day and got me thinking. How come I can do this if my project was late? Stay with a expired driver license? Work until midnight? In either case I will get unsatisfied and worried, with this kind of mood how a good work can done?
Some arguments against a "long hour" work is that people have to live outside the cubicle, but in fact there's some things more practical. We can't cope with all things we need to do if we are in a "long hour work" policy, there's no time.
Developers have to work on a normal scheduling, if not, the consequences are terrible. A tired developer with fall in the easy solution to reach the deadline. This will lead to a less extensible code, that will lead to problems in module integration, that will make the final cycle of development a bug hunt and more long hours to find those. Well, what can happen if a you add tired developers, buggy code and deadline approach?
Something has to give up. You can't make the developers more efficient with more long hours, the bugs will stay in the code until someone removes them, so the most common to give up is the deadline. The "long hour" solution turns to be longer that you expect.