1) whoever does X, except for the reason of Y, commits Z
This specifies the necessary and sufficient condition for having committed Z. There is only one possible "excuse" for X, namely Y.
2) whoever does X, for the reason of Y, does not commit Z
This specifies only a sufficient condition for not having committed Z. Y is an "excuse" for X, possibly one of several.
(2) follows from (1)
EXAMPLE
Suppose...
X = kills someone
Y = self-defense
Z = the crime of murdering that person
(1) Whoever kills someone, except for the reason of self-defense commits the crime of murdering that person.
This specifies the necessary and sufficient conditions for having committed the crime of murdering someone. There is only one possible excuse, namely self-defense.
Murder <=> Killing & ~Self-Defense
EDIT: This seems to work based on the truth table. Check out each line where the definition (col. 4) is true.
It's interesting, however, to see what doesn't work. Killing => (Murder <=> ~Self-Defense) would seem not to work. See line 5 of this truth table. The definition (col. 4) is true, Killing (col. 1) is false, but Murder (col. 2) is true. The general rule is that if the antecedent ("Killing" in this case) is false, then anything goes for the consequent ("Murder <=> ~Self-Defense"). It may or may not be true.
(2) Whoever kills someone for the reason self-defense does not commit the crime of murdering of that person.
This specifies only a sufficient condition for not having committed the crime of murder. Self-defense is one of possibly several excuses. Self-defense is an excuse for killing someone, possibly one of several.
Killing & Self-Defense => ~Murder
(2) would, however, follow from (1).
EDIT: See truth table