Ultimately I think it comes down to a negative balance of achievement to effort. By that I mean the developer is putting in more than they perceive they are getting back.
As I'm sure Jeff & Joel have blogged before, we as a group tend to have very internal loci of control, we do what we do because it interests us and we love it. Rarely do we work purely as a result something external (e.g. financial reasons), we do it for the sense of success we get when we complete something, or the sated curiosity that comes from truly understanding.
Whether natural or built up through constant exposure and experience I think we also have, or like to think we have, some innate understanding of the way systems work. Thus when presented with a system that is no longer working the way it was originally, we're no longer feeling the same buzz being returned for the amount of effort we input, we attempt to analyse and debug what's going wrong.
Typically this can be simplified to a lack of control over our environment, often manifested through issues like being stuck on maintenance or never-ending projects while other developers get the new "cool" work, having to work with old tools or systems when we know of better ones, or even being placed in an work space where there's no space to think or reason. It may or may not be immediately or consciously obvious that the system is broken in this way, but I still think that we grok it on a fundamental level.
Thus the first response most readily available then becomes to just give up and accept defeat, accept that there is a massive bug in the system but that it's not within the programmer's power to fix it. That, to my mind, seems an unacceptable option to the kinds of developers that are likely to suffer from burnout. To them every last bug should be out of the system and they want to see it working properly as intended, anything thing else and the solution's not right, the problem remains unsolved.
That leaves the other option, to adjust the only variable within their control - the amount of effort they put in.
Of course, the hope is that with increasing the amount of effort there will eventually be a sense of achievement to equal all the extra work. Unfortunately it then becomes a vicious circle and all the extra work put in just fuels a growing resentment. Burning out then comes when the programmer finally gives in and chooses option A (often compounded by a feeling of failure due to the perception of a bug getting the better of them).
As a demographic we're actually relatively easy to please. Give us tangible benefits and we're happy - somewhere quiet to work, interesting problems to solve, some variation, and a challenge and we'll be well away coming up with all kinds of new and interesting solutions to your problems. Deprive us of those things and eventually we'll fall into the pattern of becoming desensitised to the ever more rare sense of achievement, or worse, we'll leave to working for the competition.
Given that it seems somewhat surprising to me that we're more often treated as grunts there to stack the shelves with code so the business has something to sell to its customers. But then I suppose I'm on the inside looking out, and I have to accept that the men in suits will never really understand what makes us tick.
Oh yeah, and wearing suits sucks too.