Skillnaden ligger i att <p></p> markerar att innehållet är ett stycke, medans <div></div> är en generisk container utan speciell betydelse.
Vill du centrera ett stycke är det alltså <p align="center"></p> du skall använda, och vill du centrera rent allmänt (på det sättet <center></center> ofta används) är det <div align="center"></div> som fungerar bäst.
Observera dock att även dessa sätt att centrera är på väg ut (de är markerade som "deprecated" i nuvarande standard) på samma sätt som <center></center>. Tanken är i stället att det i framtiden är CSS man skall använda för all formatering, inklusive centrering.
HTML var aldrig tänkt att användas till att beskriva utseendet på sidan, och är därför inte speciellt lämpad för det. Att det ändå blivit så beror på många faktorer, men kanske framför allt för att Netscape tyckte att det skulle vara så (Netscape dominerade helt under ett antal år, och deras ord var lag oberoende av vad andra tyckte).
Men nu försöker man alltså gå tillbaka till att separera innehåll från utseende. HTML / XHTML används då för att beskriva innehållet (talar om vad som är ett stycke, vad som är en rubrik - men inte hur detta stycke eller rubrik skall se ut) och CSS används för att beskriva utseendet. Fördelen med detta är flera. Framför allt gör det WWW plattformsoberoende. Små klienter t.ex. kanske inte kan visa texten med den storlek som författaren tänkt sig, men det kan fortfarande tolka texten genom att titta på HTML-koden. Det gör det också möjligt att beskriva olika utseenden beroende på vilken klient som används. En webläsare kan läsa en stilmall, en skrivare (som kanske behöver funktioner som talar om var sidbrytningarna skall ligga) läser en annan, en talläsare (som läser texten - behöver kanske funktioner som talar om hur vissa partier i texten skall betonas) läser en tredje. Alla använder dock samma HTML-sida vilket gör att själva innehållet bara behöver skrivas in en gång.