Bei einen leeren optionalen Argument ist das optionale Argument eben genau das: leer. Bei einem nicht gesetzten optionalen Argument wird hingegen die Voreinstellung für dieses Argument verwendet, die auch nicht leer sein kann. Dazu ein Beispiel:
\documentclass{article}
\newcounter{test}
\newcommand*{\nexttest}[1][gute Idee]{% neuer Befehl mit einem optionalen Argument,
% dessen Voreinstellung "gute Idee" ist
\refstepcounter{test}#1~\thetest
}
\begin{document}
Dies ist der \nexttest. \nexttest[Gute Idee] im Vergleich dazu. Und dann noch \nexttest[].
\end{document}
ergibt:
![Unterschied zwischen leerem und nicht vorhandenem optionalen Argument][1]
Man sieht hier deutlich, dass ein leeres optionales Argument nicht dasselbe ist, wie ein nicht angegebenes optionales Argument. Ein ähnliches Ergebnis bekommt man übrigens auch bei den Gliederungsbefehlen:
\documentclass{article}
\begin{document}
\tableofcontents
\section[]{Test}
\end{document}
Hier erzeugt das leere optionale Argument einen Eintrag ins Inhaltsverzeichnis mit leerem Text (die Nummer bleibt). Verwendet man in dem Beispiel eine KOMA-Script-Klasse, wird sogar der gesamte Verzeichniseintrag unterdrückt.
Was das Weglassen des optionalen Arguments bewirkt, wird übrigens in der Regel in der Anleitung zum jeweiligen Befehl angegeben. In einigen Fällen kann das Ergebnis natürlich auch identisch mit einem leeren optionalen Argument sein.
sein. Da `\usepackage` und `\documentclass` als Voreinstellung für das optionale Argument ein leeres Argument haben, ist das bei diesen beiden Befehlen der Fall.
[1]: http://texwelt.de/wissen/upfiles/test1_1.png