The grocery (or canned food) collection drive is the charity-industrial complex's perversion of that most effective model of gifting: a grassroots community-driven mutual aid project.
Think of a real community of poor working folks. There aren't that many anymore, but just imagine. They don't have a staffed and funded 501(c)(3) non-profit corporation, because they're busy working to survive. But they do care about the hungry among them: the disabled, the elderly, the down-on-their-luck. So everyone contributes some spare food, and friends and neighbors volunteer to distribute them directly to the people who need them.
This is ultra-efficient, because it's tied into the existing social fabric. Friends and neighbors already have the collective intelligence to know who needs what and how badly, where resources will be helpful and where they'll be wasted. It's also efficient for the cash-strapped donors, because they know what useful excess they have and how to put it to good use, rather than only allowing them to contribute liquid assets which are badly needed elsewhere.
So on an aesthetic level, throwing cash at a foundation can feel like a "bourgeois" approach to helping others, while collecting cans and groceries can feel more communal and authentic.
But as Cory observes, the logistics/aesthetics are not what's really important. Gifting groceries can be pretty useless if done in a bureaucratic, alienated way. Giving cash can be really good, if it's part of your real community effort. It's the philosophy behind it that counts: are you practicing mere charity, or true communism?