\newline or \\ after an empty line would be an error anyway, but otherwise it's ok (if really necessary ;-)). \par or empty lines will do in a key as well.
Just mustn't define the command \foocmd as \newcommand*{} but as \newcommand.
If you want to be on the safe side, use \NewDocumentCommand{\foocmd}{+o+m}{...} from the xparse package, the + character allows explicitly \par etc. in the argument then.
Some background
TeX's \def command does not allow arguments with a parbreak etc, unless the \def usage is preceeded with \long (see the example below).
LaTeX's \newcommand is basically a wrapper for \long\def..., so it does allow \par, empty lines and \newline and \\, whereas \newcommand* is the 'un\long' version of it, disallowing this features.
\documentclass{article}
\usepackage{xkeyval}
\makeatletter
\define@key{foofamily}{foo}{%
\def\KVfookey{#1}%
}
\def\foodef[#1]#2{%
\setkeys{foofamily}{#1}%
\ifdefined\KVfookey
The key had the value \KVfookey
\fi
Mandatory argument was #2
}
\long\def\foodeflong[#1]#2{%
\setkeys{foofamily}{#1}%
\ifdefined\KVfookey
The key had the value \KVfookey
\fi
Mandatory argument was #2
}
\makeatother
\newcommand*{\fooother}[2][foo={A long
key
}]{%
\setkeys{foofamily}{#1}%
Arg was #2%
}
\newcommand{\foocmd}[2][foo={A long
Arg
}]{%
\setkeys{foofamily}{#1}%
The key was \KVfookey
And this is the 2nd argument: #2%
}
\begin{document}
% Won't work, since arg isn't long
%\foodef[foo={Some
%key}]{Hello World again}
% Won't work, since defined with `\newcommand*` .. i.e not \long\def...
%\fooother{Hello World}
\begin{itemize}
\item Using a \verb+\long\def+ command -- works
\foodeflong[foo={Some
key}]{Hello World again}
\item Using a \verb+\newcommand+ command -- works
\foocmd{Hello World}
\foocmd[foo={A very long command \newline\newline
\par
\parskip=5cm
key}]{... which is absolutely useless}
\end{itemize}
\end{document}

\newcommandinstead\defto define macros then this is automatic. Other differences are discussed in What is the difference between \def and \newcommand?. – May 31 '15 at 09:52