`\newcommand`, `\renewcommand` und Freunde können Befehle nur mit maximal *einem* optionalen Argument definieren:
\newcommand\foo{...} % gar kein Argument
\newcommand\foo[1]{...} % ein Argument
\newcommand\foo[2]{...} % zwei Argumente
\newcommand\foo[2][bla]{...} % zwei Argumente, von denen das erste optional
% ist und den voreingestellten Wert `bla' hat
Wenn Du also
\let\citeP\citep
\renewcommand\citep[1]{{\scshape\citeP{#1}}}
machst, dann hat `\citep` hinterher gar keine optionalen Argumente mehr.
\renewcommand\citep[3]{{\scshape\citeP[#1][#2]{#3}}}
würde bedeuten, dass `\citep` nun immer mit drei verpflichtenden Argumenten zu verwenden wäre:
\citep{}{}{key}
\citep{Vgl.}{S.~3}{key}
Möglichkeiten einer passenden Neudefinition wären mit `xparse` sicher gegeben, aber hier ist das IMHO konzeptionell die falsche Herangehensweise. Die Namen werden in `natbib` alle mit `\NAT@nmfmt` aufgerufen. Besser ist es, hier anzusetzen, und es benötigt auch nur ein Argument:
\makeatletter
\renewcommand*\NAT@nmfmt[1]{{\scshape\NAT@up#1}}% wie original, aber mit \scshape
\makeatother
Damit sieht Dein MWE dann so aus:
![alt text][1]
----------
Noch besser wäre es, ganz auf `natbib` zu verzichten, und stattdessen einen passenden Stil mit `biblatex` zu verwenden. Dort sind solche Anpassungen in der Regel trivial bzw. es gibt dafür dann eine offizielle Schnittstelle.Schnittstelle.
[1]: http://texwelt.de/wissen/upfiles/natbib.png