You're absolutely right. Have a system where people are happy and have disposable income and you will have charity. Add Judeo-Christian values and you will have even more charity. But socialism breeds a different concept of charity … he who demands government take more from people to redistribute - is deemed more "charitable". He contributes nothing himself other than demands, and sees continued need (which is inevitable in any economic system, as in the basic concept of economics 'limited resources, unlimited demand') as failure of others to heed to his demands.
But charity aside, core problem of socialism is change in incentive. Consider healthcare for example. Why do all the government run healthcare facilities ration procedures? In a free market, these facilities are incentivized to do as many procedures as possible because they are paid per procedure. Government run facilities have a budget in which they estimate a certain amount of each procedure within that budget. There is no incentive - or resources - to do additional procedures outside the planned amount. So they chose from the applicants who is going to get these procedures and the rest are refused.
This type of disincentivization applies to all services. And as budgets shrink, as they always do in socialist economies, services shrink with them. And the biggest currency becomes not money - which you can have more of if you work harder and longer - but graft and cronyism. "You give me that medical procedure and I will make sure your 10 year wait for a new apartment is only a 1 year wait".