Xcode doesn't look at external paths, by default. However if you set the HEADER_SEARCH_PATHS or USER_HEADER_SEARCH_PATHS build settings, you can put in all the external paths you want. That's why Homebrew, etc., work and are greatly appreciated. As @jrose noted about, Xcode only compiles against an SDK be default , which means you have to provide the external paths you also want to include in your project via the build settings.
However, I don't know enough about SPM to know what would happen if you specified a system library that is provided by Homebrew and you don't have Homebrew installed? Does it automatically install it? Does it put up a message to the user that you have to install it? As I said, they don't have to be installed in the SDK, but, you have to add build settings to Xcode to setup the search paths (or use command line parameters like -I /usr/local/include, as you originally did).
The behavior about verbosity makes sense. clang has -I /usr/local/include as a default search path (probably because scrum inserts it as part of a command line invocation, as mentioned by @jrose). However, when swift invokes clang as a subsidiary tool to compile C/C++ programs, the -v argument doesn't apply to the clang invocation, only the swift invocation. -Xcxx -v actually passes a -v to the clang compiler, which is where you get the clang verbose output.
Most of Boost is header only. In my example project, I included a the date_time package to show how you might incorporate a library that does have to be compiled. You could tailor what I included (which is not nearly the whole of Boost) to specifically fit your needs to reduce the number of header files. What I included are all those files needed for the complete algorithms, date_time, and exception libraries. However, I also included a bunch of stuff that you might not need, for expediency's sake. For example, some of the date-time formatting code requires the sign function defined in the math library. To be expedient, I copied in the entire math library, which include math functions like Bessel functions, that you probably don't need and could be eliminated to reduce the size.
Header files are not linked. They are complled into object code by clang as part of the object generated by the code that actually includes the header files(s). The linker is not involved
swift build plans compilations and other tool usage as part of the overall task. If there are C++ files (C files, Obj-C files, etc.) that are specified as part of the task, swift build schedules sub-taks for clang/clang++ to compile those files to object code. From then on, it's clang that processes the files. As far as I know, header files are really strictly the province of the subsidiary tools, not swift build itself. swift build probably only looks at header files for changes since they are marked as dependencies for affected source code files (.cpp,.c files) by clang, and uses that information to help schedule what source code files need to be compiled.