The answer to your question Why does adding hypertarget to TOC change pagination? is that by adding \addtocontents{toc}{\protect\hypertarget{moo}{}} will add a new line in the .aux file with \@writefile{toc}{\hypertarget {moo}{}}. On the next compilation, an additional empty line with invisible hyper-target will appear in the PDF, which seems to us that the pagination changed.
To overcome this situation, we need to tweak \section, \subsection and what ever section commands which require navigation as given in the below example:
\documentclass[12pt,twoside]{article}
\usepackage[bookmarks=false,colorlinks,linkcolor=black]{hyperref}
\usepackage{lipsum}
\makeatletter
\def\ps@myheading{%
\def\@oddhead{\mbox{}\hfill\slshape\rightmark}%
\if@twoside
\def\@evenhead{\slshape\leftmark\hfill\mbox{}}%
\else%
\let\@evenhead\@oddhead%
\fi%
\def\@oddfoot{\mbox{}\hfil\thepage\hfil\mbox{}}%
\let\@evenfoot\@oddfoot%
}
\def\linksection#1{%
\section[\string\smash{\string\raisebox{\baselineskip}{\string\hypertarget{moo.\thesection}{}}}#1]{#1}%
\def\rightmark{\hyperlink{moo.\thesection}{\thesection.\quad #1}}%
\let\leftmark\rightmark%
}
\def\linksubsection#1{%
\subsection[\string\smash{\string\raisebox{\baselineskip}{\string\hypertarget{moo.\thesubsection}{}}}#1]{#1}%
\def\rightmark{\hyperlink{moo.\thesubsection}{\thesubsection.\quad #1}}%
\let\leftmark\rightmark%
}
\def\nolinksection#1{%
\section{#1}%
\def\rightmark{\thesection.\quad #1}%
\let\leftmark\rightmark%
}
\def\nolinksubsection#1{%
\subsection{#1}%
\def\rightmark{\thesubsection.\quad #1}%
\let\leftmark\rightmark%
}
\pagestyle{myheading}
\makeatother
\begin{document}
\mbox{}\vspace{5.5in}
\tableofcontents
\linksection{A}
\lipsum
\linksection{B}
\lipsum
\nolinksubsection{BA}
\lipsum
\nolinksubsection{Pagebreak should go below here}
\lipsum
% but it doesn't if this is un-commented
\linksubsection{BC}
\lipsum
\linksubsection{BD}
\lipsum
\nolinksection{C}
\lipsum
\end{document}
Defined a new pagestyle (header and footer) named myheading to put the navigation in headers which lead back to the ToC entry. Also, the commands \section, \subsection, etc changed to \linksection, \linksubsection respectively for those sections which required the navigation using hyper-linking. And those \section, \subsection which does not require navigation are defined as \nolinksection, \nolinksubsection respectively. These macros will define respective entries for \hypertarget in the ToC and \hyperlink in the headers.
Hope this helps.