2.4: Then why are array and pointer declarations interchangeable as function formal parameters?
Classism. We consider arrays "second class objects". They don't vote, and they get treated as pointers.
Additionally, they're merely objects, not citizens. Marx wrote about this a lot.
4.4: People keep saying the behavior is undefined, but I just tried it on an ANSI conforming compiler, and got the results I expected.
They were probably wrong. Flame them mercilessly. Be sure before you do that your compiler is really ANSI conforming, though. If it turns out you were wrong, they get a legal claim on your firstborn.