Different reasons with some commonalities.
In Ferguson, there was a lot of conflicting testimony, no video of the full incident, a robbery committed by the victim just before the incident, and the victim did attack the police officer.
In Staten Island, there was a full video pre-empting the value of much of the testimony, no felony committed by the victim (illegal sale of goods, resisting arrest) and a clear exclamation of a need to breathe.
In the first case, it is a lot more likely there just wasn’t enough evidence to indict on. It’s unlikely that a jury would have found the officer guilty of homicide when there was numerous accounts of the victim attacking the officer. That appears to me to be enough reason not to indict him.
In the second case, it is not clear why there was no indictment based on facts, so it does underscore that the grand jury system, at least in NYC, is broken.
Having said that, I am perplexed why the case in Cleveland is not getting more coverage. If there is no indictment there, the balloon may burst. As I said weeks ago, the Cleveland case seems of all the three, the clearest example of the problems with police shooting first and asking questions later.