There is a big difference between \newpage and \vfill\eject.
Definition of \newpage in LaTeX
% latex.ltx, line 6342:
\def \newpage {%
\if@noskipsec
\ifx \@nodocument\relax
\leavevmode
\global \@noskipsecfalse
\fi
\fi
\if@inlabel
\leavevmode
\global \@inlabelfalse
\fi
\if@nobreak \@nobreakfalse \everypar{}\fi
\par
\vfil
\penalty -\@M}
Definition of \eject in Plain TeX
% plain.tex, line 558:
\def\break{\penalty-\@M}
% plain.tex, line 564:
\def\eject{\par\break}
LaTeX tries first to catch problems with \everypar; if \newpage is given in sectional titles or immediately after or else in lists, some countermeasures are taken.
After this the working is almost identical, but you can notice that \newpage issues \vfil, because of how it deals with \flushbottom and \raggedbottom. Both constructions end with \penalty-10000 that forces a page break.
\vfilland\ejectare tex primitives. they are used to define the latex commands\newpageand\pagebreak, but the latter contain additional checks. – barbara beeton Oct 23 '14 at 20:42\ejectis primitive:-) – David Carlisle Oct 23 '14 at 20:55\ejectis defined inplain.texas{\par\penalty-10000 }(texbook version). it is "pre-latex", however. – barbara beeton Oct 23 '14 at 21:02