who really caused the death of zack fair
I have debated Zack's death countless times. It is obvious who killed him, the Shinra Infantry men. Therefore, it seems logical that Shinra Company is responsible. This is true in a sense however, it would be an over simplification to blame Shinra as whole; especially when you consider that some members of Shinra, specifically the TURKS tried to save Zack.
That being said you have to consider who within Shinra had a reason to kill Zack. Everyone in Shinra really had a reason to kill Zack because it was Shinra's firing policy. Their policy says that anyone who knows company secrets (in this case Zack) must be killed or stalked for the remainder of their life. For Zack's case, the only option was the later, he had nothing to lose (aside from his life) by telling people what Shinra had done. He didn't just know something useless to those who wanted to overturn Shinra, like old weapon designs, he knew of the inhumane experiments they performed to make stronger SOLDIERS, which would make just about anyone who found out want to destroy Shinra. That being said, the company as a whole (including the TURKS) would be send out to kill him.
Which in turn begs another question, why would the TURKS (or anyone else within Shinra) disobey orders? For the TURKS, an organization that prides itself on loyalty, they knew Zack to be a friend and a member of their "family". The TURKS wouldn't stand for one of their own being hunted, and since they considered Zack to be just that, they would help him if they could. Some may feel that if they felt that way about Zack, they should have done something sooner. Of course, that would be out of character, the TURKS also value secrecy and to disobey Shinra outright would lead to problems, including death. With that established, Zack was friends with more than just the TURKS; he had all of SOLDIER in his back pocket. Why then, did no one from that department try to help him? Simple, anyone with enough knowledge about how Shinra operates was already gone. After Angeal, Genesis, Sephiroth, Lazard, and anyone else who could help left (and/or died), no one else would be able to help them in their goal?
This leaves the Shinra executives which at this point would be Heidigger, Scarlet, Palmer, Hojo, and the President himself. Obviously, they would want to keep their power, and since they didn't do dirty work for themselves they had the Shinra infantrymen (no working under Heidigger) do the job for them. Thus, making the Shinra executive board responsible for Zack's death.
Of course, Cloud would debate this. He believes that if Zack hadn't helped him escape as well, Zack would have had more energy to fight and wouldn't have died. So you could say that Cloud is partially responsible, but seeing as how Zack chose not to abandon Cloud it really wasn't Cloud's fault that Zack died. Besides, there was no guarantee that Zack would have survived without Cloud.
Also, note that all of this is based on the Crisis Core explanation of events. In Last Order it could be debated that some of the TURKs were actually planning to kill Zack, however, I feel this was unlikely.