Because that's what the HTTP spec says. Wander off-spec, and you will eventually have problems, like the unfortunate gov department in the article.
http://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol#Saf...
Relatedly, idempotency is a too-poorly understood concept.
What do you mean?
Therefore, if you suddenly find a way to actually forbid GET to ever trigger that, then that half wouldn't work "properly" any more.