With all of the competition with grocery stores, especially in my area (I drive 5 miles to work and pass 6 grocery stores, pretty much the same all over the city) that we are under pressure to never run out of anything, which means that we must overproduce. If a customer comes in and we don't have something, in most cases they can go across the street to the competitor and get it.
The good thing is customers always have what they want, the bad side is, it produces a lot of waste. Gone are the days when you had to get to the bakery early to get what you want, or they are out, today we must be in stock from open to close. We as customers demand that we get what we want, or we take business elsewhere, and grocery stores have to oblige or die.
There are so many grocery stores in our area, that it was actually kind of difficult to find someone to pick it up, even harder, getting volunteers to show up at a consistent time. We have limited storage space and company policy says that out of date product has to be out of our departments by 9am. We have to store the perishable stuff under refrigeration, which means that if we put it in a stock room cooler, whoever works that cooler has to work around baskets of food until someone shows up (store rooms and coolers are small usually to allow for maximum sales floor space). The charity that picks up also has to sign a waiver stating that they will not sue, if they get spoiled product.