People get kind of freaked out when a big compilation thingie dumps a bunch of red stuff to the screen. Even if, at the end, it "worked", this sends the message that things are broken somehow.
Idea: if a dependency is optional, buffer up the output from the build scripts, and log it all at loglevel=silly or some such. Maybe output a warning line that says something like optional dependency fooblz failed to build, continuing without it (pending language bikeshedding).
References:
Another idea might be to just log the failures at silly or info rather than warn or error, but then the build output would still be dumped out, which might itself have a bunch of scary failures.
Definitely the failure output should not be lost entirely, and needs to end up in the npm-debug.log file. But it looks way too much like something alarming right now.
Doesn't seem important enough to put in 2.x rather than just moving forward somewhere in 3.x, but I'm happy to be outvoted on that by the cli team if y'all feel differently about it.