Bea, Thanks so much for your comment and for your wonderful, indispensable blog.
Two way binding does work as expected. When I set the BoundText procedurally, all was well.
The problem was that I had placed the BindableRun in a Paragraph in a FlowDocument in a RichTextBox, thinking that, magically, the BindableRun would receive text input from the RichTextBox. I just have to figure out how to route the input.
Your post has helped me on the way to solving a rather knotty problem. I have tried to implement two-way binding with no success using FrameworkPropertyMetadataOptions.BindsTwoWayByDefault when registering the BoundTextProperty. Any ideas? Thanks so much.