Charity must be voluntary. Very simply, you get what you subsidize. If you give money to people who have certain characteristics, you will find more people trying to achive those characteristics. Rather than government aid working to eliminate poverty, it functions to create more poor people.
If, on the other hand, charity is voluntary, and human judgement is applied to the decision to help someone, then that human can evaluate each need on its own merits. Sometimes some people are helped most by the kick in the butt that poverty provides. Other people are not, and no blanket rule (as governments have to apply) will get it as right.