FlowDocumentScrollViewer には、直接スクロールを扱う機構が存在してないみたいです。テンプレート(またはビジュアルツリー)を漁れば ScrollViewer が手に入り、こちらを使えばスクロールを扱えます。
しかし、当然ながら ScrollViewer 自体は物理インクリメントによるスクロールのみのサポートであり、「このテキスト要素を表示したいんだけど」というのは直接的にはできません。
幸い、テキスト要素 TextElement が提供する TextPointer には、自分を表示しているビューア全体のどの範囲に表示されるかを表す GetCharacterRect メソッドが用意されています。
ということで、TextElement を引数に取る ScrollIntoView を実装してみましょう。FlowDocumentScrollViewer の派生クラスのメソッドとしておきますが、(拡張メソッドを含めた)静的メソッドとしても構いません。テンプレートが差し替えられていることまで考慮する場合、内部の ScrollViewer を取得するには VisualTreeHelper で子要素を辿っていくようにする必要があるでしょう。
public bool ScrollIntoView(TextElement element) {
if (element == null)
throw new ArgumentNullException("element");
if (this.Document == null)
return false;
if (!this.Document.ContentStart.IsInSameDocument(element.ContentStart)
return false;
var contentHost = (ScrollViewer)this.Template.FindName("PART_ContentHost", this);
if (contentHost == null)
return false;
var rect = element.ContentStart.GetCharacterRect(LogicalDirection.Backward);
contentHost.ScrollToVerticalOffset(contentHost.VerticalOffset + rect.Top);
// HorizontalOffset の方は取り敢えず略
return true;
}