Ciao,

probabilmente è dovuto al fatto che alcuni elementi HTML hanno margin e padding di default. E' così per tutti i titoli (h1, h2, ecc.), i paragrafi (p) e anche le liste (ul).

Perciò nel secondo esempio che hai postato, invece di lasciare l'ul vuoto, scrivi:

ul { margin:0; padding:0; }
Dovrebbe funzionare