Besides, if I'm not mistaken, the GNU project turned out to be a collection
of software projects (or functional data, to cover things like text fonts,
documentation, and so on)
It has always been such a collection of largely independent packages because
UNIX is structured in this way. Even in the initial announcement in 1983, rms
writes:
Individual programmers can contribute by writing a compatible duplicate of
some Unix utility and giving it to me. For most projects, such part-time
distributed work would be very hard to coordinate; the independently-written
parts would not work together. But for the particular task of replacing Unix,
this problem is absent. Most interface specifications are fixed by Unix
compatibility. If each contribution works with the rest of Unix, it will
probably work with the rest of GNU.
https://www.gnu.org/gnu/initial-announcement.html
I do understand that they had a goal to make an independent operating system
based solely on their software
I do not think it has ever been the goal. The GNU project aimed to get a
wholly free operating system as fast as possible. To do so, rms has, since
the very beginning of the project, tried to find already existing free
software components or to liberate proprietary components by convincing their
authors. Because it was faster than writing new components. For instance, the
GNU project never started to write an X server because XFree86 was
distributed under a free software license. Same thing for the typesetting
system: TeX, which predates GNU, has always been free software.