The ones that eventually get off the street usually start with temp employment. After working a few jobs, there's enough money for a motel room and a shower and a change of clothes.
In my city there are many agencies and a lot of assistence for the person that wants to get off the street. There really isn't an excuse for it.
The ones with addiction problems need to be swept up and locked away until they dry out and then should be forced into rehab and then expected to work.
The ones that are mentally ill should just be swept up, assessed to their ability to be independent and then, without apology, monitored so they don't become homeless.
I know many homeless and talk with them regularly. One guy I pay $25/week to keep my parking lot clean.