You want to be changing the value of \cftchappresnum not \cftchapfont
Your MWE:
\documentclass[12pt]{book}
\usepackage{kpfonts}
\DeclareRobustCommand{\capsspacing}{\scshape\MakeLowercase}
\usepackage[linktocpage=true]{hyperref}
\usepackage[titles]{tocloft}
\renewcommand{\cftchappresnum}{\capsspacing}%
\renewcommand{\cftchapfont}{\normalfont}%
\renewcommand{\cftchappagefont}{\normalfont}%
\begin{document}
\tableofcontents
\appendix
\chapter{title}
\end{document}
What I believe was happening was that \cftchappresnum was set to \normalfont, causing the \scshape portion to be overridden. So you were left essentially with a \MakeLowercase giving you the lowercase "a" and a small caps chapter title. If you comment out the \cftchappresnum command, you would see that both the appendix "A" and the chapter title were small-caps. If that's what you wanted then just remove the \renewcommand{\cftchappresnum}{\capsspacing} line in the MWE I've provided.
Otherwise, this now sets the prechapter section numbering to \scshape\MakeLowercase and then before the chapter title, changes it back to \normalfont