The P element marks up a paragraph of text. A paragraph is one or more sentences that deal with a single thought.
A line break (BR) is mostly a presentational thing, and should be handled by CSS rather than HTML. However, there are a few cases where line breaks can be said to have semantic meaning, for instance in poetry, song lyrics, postal addresses and computer code samples. These can be legitimate uses for BR, but using BR to separate 'paragraphs' is definitely not a legitimate use.
On the other hand, P has a very clear semantic meaning: it denotes a paragraph. Sometimes web authors tend to treat P as a generic block-level container element, but that's not correct. It's not uncommon to see a LABEL and an INPUT field wrapped inside a P within a FORM, but I would argue that it's semantically wrong. A label and an input field does not constitute a 'paragraph'.