Why don't CTAN packages include build.lua?

As Joseph writes build.lua and makefiles are for the development and not for CTAN (and I just removed the makefiles from the luaotfload upload for this reason). They can contain code and settings which are not suitable for a normal user installation like the call to local tools, or specific locations.

As an example in the build.lua of the lualibs package the install target "installs" the files in the repository of luaotfload. This makes it easy for me to run the online tests for luaotfload with synched lualibs files. It would be rather a pain to have to restrict the content of the build.lua to settings which makes sense in a normal user setup.

There is nothing to stop you including build scripts in CTAN uploads: for example, in the past beamer used to have the Makefile on CTAN. However, a build script is not part of the package itself:, but is rather a convenience for the developer. (In the end, one can always extract a package and create documentation by hand.) Most notably, it's not usual to upload other 'support' material to CTAN, in particular test files, which are also part of the 'developer' files.

One can argue about the 'philosophical' aim of CTAN, but broadly it's always been about files for users. Additional material for developers has never really gone there. (For example, the sources for pdfTeX, etc., are not on CTAN.) Historically, users would take a .dtx/ins pair to install a package: today, almost all of them use TeX Live/MiKTeX, neither of which want build scripts. The small number of 'self-installing' users either are familiar with the classical route, or can be supported by a TDS-style zip for more complex packages.

Almost all code being actively developed has some kind of public source control nowadays. The type of user who is comfortable using a build script for a 'local install' is probably comfortable with a Git or SVN checkout, too. That lets them get the latest code, not necessarily what CTAN holds, in any case.

Most l3build scripts are somewhat tied to the test framework and usually test files are not shipped to ctan. Anyone who wants to install via l3build would most likely be better served by getting from a source repository such as GitHub rather than ctan. "waiting" for a ctan upload to reach texlive is usually only a day or so, so basically no one should be installing files from Ctan.