Snape killed Dumbledore because Dumbledore asked him to. Dumbledore was pleading with Snape: "Severus. Please." He meant, "Severus. Do what I have asked you to do"--that is, to kill Dumbledore.
That is what they fought about before. Snape did not want to kill Dumbledore, and Dumbledore was insisting on it.
The reason Dumbledore died is because that is redemptive for Draco. Dumbledore intends to be putting himself into the same position as Lily Potter put herself into for Harry's sake: a human shield, who makes the mark of love that keeps a person safe. Snape is helping with that process.
However, there is a difference. Dumbledore cooperates with his own death in a way that Lily Potter never did. Dumbledore makes Snape, who works for Dumbledore, kill him. In a way, Dumbledore has committed suicide. This is absolutely wrong, and Snape is actually very wrong for doing this.
That is the morality of the situation, if my theory is right, and I think that Ms. Rowling is making too close a comparison between the two different situations. Lily was willing to accept death, but Dumbledore brought about his death. Dumbledore actively cooperated with his own killing, and that is wrong, even for a good reason.