Sono due cose completamente diverse: con le graffe stai dichiarando e definendo un costruttore vuoto, mentre senza le graffe stai solo dichiarando il costruttore, per cui il compilatore si aspetta che sia effettivamente definito da un'altra parte.