If a homeless person pushes you or spits at you, what are you realistically going to do? Call the police, wait 15-30 minutes for them to show up, and hope they can find a guy who's long gone? And even when they do bother to catch the person, the prosecutors in Seattle have a track record of dropping misdemeanor cases. It just seems like a waste of time, so you end up writing it off as an unlucky experience and moving on with your day.
Other cities may be more violent on paper, but perhaps that's because they have smaller homeless populations and their crimes are perpetrated by people who can be reliably located and prosecuted.