`\newcommand` ist eine clevere Hülle für `\def`, die es auf einfache Weise erlaubt, z.B. optionale Argumente ein optional Argument zu definieren, und unter anderem testet, ob eine Anweisung bereits existiert, was `\def` bekanntlich nicht macht. Da nun die allermeisten Befehle als Argument nicht mehrere Absätze erhalten, ist das Standardverhalten von `\def`, dass seine Argumente das Token `\par` nicht enthalten dürfen (oder, was gleichwertig ist, das Ende einer Zeile gefolgt von einer leeren Zeile). Das praktische daran ist, dass man, falls man das schließende `}` vergessen hat, schon beim nächsten Absatzende eine Fehlermeldung erhält anstatt erst am Ende des Dokuments. Wenn man nun mit `\def` ein Makro definieren möchte, das mehrere Absätze als Argument erhalten kann, muss man das explizit machen, indem man `\def` ein `\long` voranstellt:
\def\foo#1{<#1 darf kein \par enthalten>} % kurz
\long\def\bar#1{<hier kommt was mit #1, das jetzt \par enthalten darf>} % lang
Was hat das ganze mit `\newcommand` und der Frage zu tun? Nun, Leslie Lamport entschied aus Gründen, die mir unbekannt sind, dass Makros die mit `\newcommand` definiert werden, als Voreinstellung _lang_ sind, also `\long\def` entsprechen, so dass ihre Argumente `\par` enthalten dürfen. Möchte man das nicht, sondern lieber die Fehlermeldungen haben, die _kurze_ Makros liefern, so muss man `\newcommand*` verwenden.
\newcommand\bar[1]{<#1 darf \par enthalten>} % lang
\newcommand*\foo[1]{<#1 darf kein \par enthalten>} % kurz
In den vielen Fällen wird `\newcommand*` daher bevorzugt eingesetzt.
Das LaTeX3-Paket [`xparse`][1], das mit `\NewDocumentCommand` und Freunden sehr flexible Befehle zur Definition eingener Makros liefert, hat das Verhalten übrigens wieder umgedreht:
\NewDocumentCommand\bar{m}{<#1 darf kein \par enthalten>} % kurz
\NewDocumentCommand\foo{+m}{<#1 darf \par enthalten>} % lang
Hier kann und muss man außerdem pro einzelnem Argument entscheiden, ob man es lang möchte oder nicht.
[1]: http://www.ctan.org/pkg/l3packages