L'unica spiegazione che mi sono dato è che struct in questo caso è usato come una sorta di modificatore e non come strumento per la creazione di un nuovo tipo.
E' esattamente il contrario.

In C++ è opzionale. In C se si utilizza una struct è obbligatorio specificare che lo sia. Se togli la parola chiave ti da errore.