Trying to reproduce your problem (you should have given a MWE), I start with:
\documentclass{moderncv}
\usepackage{lipsum}
\moderncvtheme[green]{casual}
\firstname{John}
\lastname{Doe}
%
\begin{document}
\maketitle
%
\section{Something or other}
\lipsum[1]
\lipsum[2]
\lipsum[3]
%
\section{Positions}
\cventry{DATE}{Position}{Company}{Location}{}{}
\cvlistitem{Role 1}
\cvlistitem{Role 2}
\cvlistitem{Role 3}
\cvlistitem{Role 4}
%
\end{document}
which produces:

Adding a \pagebreak
before the positions' section gives:

Indeed the first page is ragged at the bottom. The reason is that the moderncv
class chooses not to introduce vertical stretching lengths, neither between paragraphs (implicitly introduced by the \lipsum
command here) nor at section headers and list items. Of course, you can introduce them yourself wherever you like:
\documentclass{moderncv}
\usepackage{lipsum}
\moderncvtheme[green]{casual}
\firstname{John}
\lastname{Doe}
%
\begin{document}
\maketitle
%
\section{Something or other}
\lipsum[1]\vfill
\lipsum[2]\vfill
\lipsum[3]\vfill
%
\pagebreak
%
\section{Positions}
\cventry{DATE}{Position}{Company}{Location}{}{}
\cvlistitem{Role 1}
\cvlistitem{Role 2}
\cvlistitem{Role 3}
\cvlistitem{Role 4}
%
\end{document}
and then you get something closer to what you want:

To do this automatically (i.e., to properly introduce stretching lengths between paragraphs, list items, section headers, etc.), I'm afraid you need to tweak the moderncv
class quite a lot. Unless I'm missing something, it was clearly the author's intention to leave the pages ragged at the bottom. I suggest that you leave it like this, or you choose a different CV class that better suits your taste.
\documentclass{...}
and ending with\end{document}
.