Why isn't SnoopPrecompile being able to fully compile the calls in this case?

Good guess, as recursive calls that change some of the types present real challenges for inference. If in the outer call you can predict which branch the inner call will take (i.e., the output of bandwidths is predictable based on the view), then presumably this is cleanly fixable. If not, a good bandaid might be to make self-calls Base.invokelatest(_banded_muladd!, α, ...).