'main' is a function with special rules, so there would no
technical problem whatsoever with declaring it in any
particular way, even using special made-up keywords: the
compiler must treat it specially anyway.
However, the standard imposes some requirements on
declarations of 'main', to avoid a complete anarchy.
Also, there would be no advantage: you'd declare 'main' as
'static' only to have that ignored by the compiler...
In this case, C compatibility may have played a role as well.
You can't declare main static in C. And in the case of C, this
has a strong technical justification; unlike in C++, the
compiler doesn't treat main specially (although it probably
could).
Not really a technical reason, but given that main can only be
called from outside the translation unit (and in fact, only from
outside your program), declaring it static (which for any other
function would say that it can only be called from within the
translation unit) would be misleading, to say the least.