How about the following change?

\def\includeonly#1{%
  \@partswtrue
  \edef\@partlist{\zap@space#1 \@empty}}
\@onlypreamble\includeonly

to be changed into

\def\includeonly{\@ifnextchar[\@nestedincludeonly
  \@ordinaryincludeonly}

\def\@nestedincludeonly[#1]#2{\ifx\@nodocument\relax
  \else
    \def\jobname{#1}%
    \@ordinaryincludeonly{#2}%
    \def\next{\input{\jobname}}%
    \expandafter\expandafter\expandafter\next
    \expandafter\endinput
  \fi}

\def\@ordinaryincludeonly#1{%
  \@partswtrue
  \edef\@partlist{\zap@space#1 \@empty}}
\@onlypreamble\@ordinaryincludeonly

That would mean that I could start an included file chapter2.tex
with

  \includeonly[mainfile]{chapter2}

and compilation of chapter2.tex would then instead compile mainfile
with \includeonly{chapter2} active.

Something like that.  This would make working with \includeonly a lot
more convenient.

--
David Kastrup, Kriemhildstr. 15, 44793 Bochum