<p> (Paragraph) hat den Vorteil, daß es direkt einen Absatz definiert. Wenn Du also zum Beispiel mehrer Absätze schreiben willst, kannst Du für jeden einen <p> machen, anstatt immer zweimal <br /> für eine Leerzeile machen zu müssen. Außerdem kann man in <p> gleich noch verschiedene Dinge definieren, wie etwa Größe der Schrift, Schriftart oder Ausrichtung.
<div> benutze ich eher zur Ausrichtung von Bildern oder Tabellen, aber man kann es sicher auch für Text verwenden. Da ich aber generell Text immer in <p> setze, wäre noch ein <div> doppelt gemoppelt und darum lasse ich es weg. Wenn in einen gewissen Part im <p> durch eine besondere Schriftart hervorheben will oder mal eben die Größe ändern will, nehme ich <font>.
Und <br /> (Break) sind eben für Umbrüche. Du kannst natürlich auch damit den ganzen Text formatieren, aber wenn der schön und sauber in <p>s steht, ist es für mich im Code überschaubarer. Ich sehe, wann ein Paragraph beginnt und wann einer endet und wenn ich mittendrin Umbrüche brauche, dann greife ich eben auf <br /> zurück.

Was man nimmt und wie man den Text formatiert, ist sicher eine Frage des Stils. Wer gerne quick-&-dirty skriptet, der kann sich Spirenzen wie <p> um alle Texte sicher sparen. Wer aber -- wie ich -- lieber sauber formatiert, damit er auch in ein paar Wochen noch weiß, was das jetzt alles soll, für den empfehle ich <p> und dergleichen zu verwenden.