Let's say instead of building houses, I invest the money in job training and crime intervention programs. Maybe employment goes up and crime goes down. Maybe it doesn't. And even if the numbers move in the correct direction, it is extremely difficult to quantify how much I helped versus external variables outside my control. I'd need a team of data scientists just to quantify how much I helped. And at the end of the day, I am still only helping the subset of people for whom those kinds of programs actually can help.
The nice thing about housing and feeding people is that it directly addresses the base of Maslow's hierarchy of needs. You can be 100% certain that you are helping. And you can be 100% certain you are helping almost everyone. Everyone needs food and shelter. Not everyone needs job training.
Maybe I overvalue simplicity and certainty, maybe I'm overthinking it. Maybe there is just something appealing about just directly addressing a need.