Well, the NR §3.1.5 does say:
"A .ly file may contain any number of toplevel expressions, where a
toplevel expression is one of the following: …
• A \score block. This score will be collected with other toplevel
scores, and combined as a single \book. …
• A \book block logically combines multiple movements (i.e.,
multiple \score blocks) in one document. If there are a number
of \scores, one output file will be created for each \book block,
in which all corresponding movements are concatenated."
So I assume you are depending on the first bullet, the implicit \book
block, to concatenate the scores. (I'm not sure what the \bookpart buys
you apart from a page-throw. Try commenting out your \bookpart lines.)
The NR goes on:
"The only reason to explicitly specify \book blocks in a .ly file
is if you wish to create multiple output files from a single
input file."
That's what I use \book sections for, so the my output files can be
explicitly named (with \bookOutputSuffix) in a more systematic manner.
Editing your MWE with s/\bookpart/\book/ would demonstrate.
(I've never used bookparts myself.)