C

セミコロンは「末尾」なのに、中括弧の後と関数定義の最後には不要。なのでif (...) {...} ";" else とは書けない。
ただし中括弧の後でも型宣言には必要なため、(C++だけど)class宣言の後にも必要。混乱気味。

Pascal

セミコロンは区切り。よく引き合いに出されるelseの前も、if文はまだ続いているという意味で区切りは不要。
唯一例外っぽいのはvar A: Integer ";" begin (←区切りの意味では俺は要らんと思う)

Modula/Ada

セミコロンは「末尾」。なのでelseの前にもendの後ろにもとにかく全部書く。
これが一番統一されていると思う。