Perchè la seconda è una dichiarazione di tipo. Il costruttore non sei tu a chiamarlo, ma viene invocato automaticamente alla costruzione di un oggetto.

La seconda scrittura è equivalente a una scrittura di questo tipo:
codice:
int a;
float b;
char c;
Quello che indichi nella sezione public, invece, è il prototipo del costruttore e serve ad indicare che per la costruzione dell'oggetto non sono secessari parametri.
Scrivere la prima 1) è equivalente alla seconda 2):
codice:
1) A a;
2) A a = new A();

Ciao.