The Washington Post has a useful "5 Myths" feature demolishing many of the conspiratorial stories used to explain rising obesity, especially among poor people: it's not because of a corporate plot to sell junk food, or because people don't know that what they are eating is bad for them. So why is it?
1) Evolution. Our ancestors passed through many famines, and as a result we are equipped with strong urges to eat whenever there is food available.
2) Availability. Food that tastes good is available all around us, in great variety, and it is cheap. When you look into what hunter-gatherers eat you discover that while they find lots of good stuff in some seasons, there are times of the year when they subsist on barely edible crap, like mongongo nuts, cassava or dried salmon. No wonder they didn't get fat. But for us, there is always something close by that is tasty and that we are not sick of.
3) Desk jobs. Most jobs no longer require much physical activity. Most Americans now work at desks or behind counters, and much factory work is less physically taxing than it used to be. So is building houses. And housework -- washing clothes by hand was laborious. I have read that just the reduction in the calories expended at work accounts for most of our weight gain since 1950. Also, since most people now have cars, we walk a lot less.
4) Stress and unhappiness. So why are poor people fatter? Because their lives are more miserable. Searching for something to make themselves feel better, they eat. When you are worried about how to get the car fixed when you have no money and can't get to work to earn any because your car is broken down, life is tough. A jolt of fat and sugar can give you the energy to cope, for a while. And this explains why upper class people are thinner. Recall that exercising self-control is a tiring activity. Poor people are drained by their tough lives, so they have less mental energy for not eating donuts.
I don't think anything else is needed to explain our problem.