1. You could say that Hiroshima contained enemy soldiers, and My Lai didn't. But as far as I can tell, no one disputes that My Lai harbored the VC. And even if some villagers did harbor the VC, we would still regard mass killing of unarmed civilians a war crime.
2. You could say that Hiroshima's civilians shared collective guilt for Japan's crimes, but the My Lai civilians didn't share collective guilt for the VC's crimes. But if villagers did indeed harbor the VC, why would their collective guilt be any less than that of the Japanese?
3. You could say that the ratio of soldiers to civilians killed was much higher in Hiroshima than My Lai. Maybe; it's hard to say. But the Hiroshima ratio was only 7-13%. Would the presence of 347*7% = 24 VCs among My Lai's dead meant that American actions were not a war crime?
4. You could say that the Americans couldn't separately target soldiers in Hiroshima, but they could separately target soldiers in My Lai. But that's false. Americans had a wide variety of weapons and tactics to use against the Japanese; many would have targeted soldiers but spared civilians. Furthermore, as American soldiers in Vietnam often complained, when you're fighting guerrillas it's extremely difficult to tell soldiers and civilians apart. Even a kid can fire a gun or plant a mine. The perpetrators of the My Lai Massacre could truthfully insist that killing a lot of civilians was the only way to make sure they killed their enemy soldiers.
5. You could say that the Japanese started the war, and the VC didn't. But in what sense did the VC not start the Vietnam War? It's not like the South Vietnamese government suddenly sneak attacked a peaceful guerrilla army wandering the countryside.
6. You could say that the American soldiers in Hiroshima were just following orders, while the American soldiers in My Lai weren't. But the evidence strongly suggests that the soldiers in My Lai were following orders. More importantly, if the soldiers in My Lai were following orders, we would consider their commander a war criminal. By that logic, the commander of the Enola Gay would be a war criminal, too.
7. You could say that Hiroshima successfully ended the war and saved lives, and My Lai plainly failed to do so. But My Lai was much smaller than Hiroshima. If My Lai tactics were applied on a vast scale - say 300 villages to make the body count comparable to Hiroshima's - maybe they too could have ended the war and saved lives.* In any case, by this logic, Hiroshima would have been a massive war crime if it failed to make the Japanese surrender.
I propose that the real reason for the distinction is simply this:
8. The soldiers in My Lai murdered people they could see face-to-face. The crew of the Enola Gay dropped a bomb from a high distance and flew away.
Needless to say, if the true explanation is (8), either Hiroshima was a war crime, or My Lai wasn't. Well, I suppose you could say that long-distance murder isn't really murder.