`\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