Again, according to Oracle doc they're the same. Testing shows that DECODE regards NULLS as equal, while CASE (and all other statements involving NULL) do not.
SELECT CASE NULL WHEN NULL THEN 0 ELSE 1 END AS test FROM dual;
SELECT DECODE(NULL, NULL, 0, 1) AS test FROM DUAL;
The first returns 1, since NULLS aren't equal, the second returns 0 because to DECODE, they are.
Whether NULLS are equal can be debated, but once you make your choice, stick ot it!
If I had a cluebat and a timemachine, your former self would be in for one hell of a surprise.