It seems like a great improvement on this would be an organizational structure like the author suggests. Such a group can do more planning/design and provide ongoing support for the client non-profit. I also agree with the idea of doing this at some minor fee, nothing to break the bank for the client. But there is certainly some sort of price you can charge that can help keep expectations realistic so no client takes unfair advantage of the group's generosity.
I was hesitant to participate at my local GiveCamp event though because of the lack of future support for the organization. At the end of the event the maintenance responsibility is handed off to the nonprofit. That's completely fair to the developer that there be no expectation to do any more work on it.
But that non-profit didn't have the ability to get that software developed, so how could they maintain it either? It's great that they get donated a free copy of Visual Studio and some books from the GiveCamp sponsors, but if they could use that to maintain software, they could've written it themselves in the first place. What if some bug emerges a week after delivery and they can't even use that app at all? All that effort's been wasted and the charity could be stuck with broken software.