One of the reasons homelessness is intractable is because it's complex and hard to comprehend. I've spent some years trying to come up with a simple, accurate explanation of what causes homelessness that doesn't make the mistake of blaming a single cause, like addiction or mental illness.
The best explanation I've come up with is that homelessness occurs in most cases when there are more problems than solutions.
This is why you can't simply blame addiction or mental health issues. There are people suffering from addiction and mental health issues who aren't homeless and those kinds of problems cannot be used to predict an outcome of homelessness.
The difference between someone in housing and someone on the street can be one less resource or one more problem. It's the proverbial straw that breaks the camel's back phenomenon. You add one more little issue and things suddenly come unraveled.
To reverse the process, you need to reduce those burdens -- such as paying down debt -- and find reliable threads that can be confidently used to begin reweaving the fabric of their life. For me, that included things like a portable income and a virtual life.