2 of 4 added 52 characters in body

The short answer is that you’d expect lib to be built (or rather, installed) if there’s a library to install, and include if there are headers to install. Usually the two go together (at least for C and C++ libraries).

In binutils’ case, the library and associated headers are libbfd, which is a library used to manipulate object files in a variety of formats. It is installed by default for same-host compilation, but not for cross-compilation, which is why you’re seeing different behaviour in your scenarios. You can see the conditional default in bfd/acinclude.m4 in the source code.

(You only need libbfd if you want to build GDB.)