As noted, this was originally done to reduce size. It is documented in 23.1.5 Tag Files and Split Files (GNU Texinfo 6.0):
If a Texinfo file has more than 30,000 bytes, texinfo-format-buffer
automatically creates a tag table for its Info file; makeinfo
always creates a tag table. With a tag table, Info can jump to new nodes more quickly than it can otherwise.
In addition, if the Texinfo file contains more than about 300,000 bytes, texinfo-format-buffer
and makeinfo
split the large Info file into shorter indirect subfiles of about 300,000 bytes each. Big files are split into smaller files so that Emacs does not need to make a large buffer to hold the whole of a large Info file; instead, Emacs allocates just enough memory for the small, split-off file that is needed at the time. This way, Emacs avoids wasting memory when you run Info. (Before splitting was implemented, Info files were always kept short and include files were designed as a way to create a single, large printed manual out of the smaller Info files. See Include Files, for more information. Include files are still used for very large documents, such as The Emacs Lisp Reference Manual, in which each chapter is a separate file.)
The splitting feature is very old. For example, when the texinfo
change-log first mentions it in 1993, the feature may have been added before the change-log began in 1988:
Tue Feb 2 08:38:06 1993 Noah Friedman (friedman@prep.ai.mit.edu)
* info/Makefile.in: Replace all "--nosplit" arguments to makeinfo
with "--no-split"