Thank you, Tadziu, for the detailed explanation of what's going on behind the scenes.
> 4. Your diversion is output, but the space at the beginning > is ignored, since we are now in no-space mode. I would say this part /is/ a bug, since the whole point of using the .bl macro, instead of .sp, is that .bl should work even when no-space mode is active. More specifically, while .bl's documentation doesn't explicitly claim to override no-space mode, it does say that it works at the top of a page, which is precisely what it is failing to do here. And it seems to me that altering .bl to ignore no-space mode in other contexts wouldn't violate its documented behavior. (Since .bl's documentation doesn't mention no-space mode at all, and .ns's documentation, as a groff primitive, naturally doesn't mention any macro sets' macros, their documented interaction would seem to be undefined.) Thoughts? In the meantime, thank you for providing a solution that works with .bl's current behavior.