C99には、単にmainで } に達したら0を返す、としか書いていないから、その時どうするかは、個々のコンパイラが決めること。

「return 0;」を挿入するなんていうのは単なる実装の1手段であって、規格上の要請でも何でも無い。
あえて言うなら、「不要」「省略可」ではなく、「有ってもいい」だ。

「int penis_penis;」とか「double oh_sex_sex;」が有ってもいいのと同じこと。