Look at the following example:
\documentclass{scrartcl}
\usepackage{filecontents}
\begin{filecontents}{my1.sty}
\RequirePackage{xcolor}
\RequirePackage{catoptions}
\end{filecontents}
\begin{filecontents}{my2.sty}
\RequirePackage{xcolor}
\end{filecontents}
\usepackage[cmyk]{xcolor}
\usepackage{my1}
\usepackage{my2}
\begin{document}
\rule{2cm}{2cm}
\end{document}
catoptions seems to cause an option clash if there is a \RequirePackage{xcolor} somewhere after it. Everything works fine if I load my2 before my1 but I can’t ensure that this won’t happen.
my1 is a place holder for my menukeys package, my2 is a place holder for any other package requiring xcolor.
\@declareoptionand the catoptions package has taken that fact into account, but there may be other packages that modify LaTeX's options processing internals that I am not aware of." -- not that this is a real answer, but it may point someone toward a better one. – Mike Renfro Feb 26 '12 at 03:28