>char[] array_char(100); // array_char is of char[] type

array_char(100) が char[] 型になるのか?
[] array_char(100) が char 型になるのか?

ならないなら、美しくない。

>a[100] int; // a[0] は int型

a[0] は int型
a は [100] int型

宣言と利用が同じ形をしている。だから、美しい。