Очевидно, RibbonTextBox не является простым TextBox; на самом деле это стековая панель с:
изображение + метка + граница. Собственно, его шаблон имеет такой контент:
<RibbonTextBox>
<StackPanel>
<Image/>
<Label>
<Border>
<ContentPresenter>
<TextBlock/>
</ContentPresenter>
</Border>
</Label>
<Border>
<ScrollViewer>
<Grid>
<Rectangle>
</Rectangle>
<ScrollContentPresenter>
<TextBoxView>
<DrawingVisual/>
</TextBoxView>
<AdornerLayer/>
</ScrollContentPresenter>
<ScrollBar/>
<ScrollBar/>
</Grid>
</ScrollViewer>
</Border>
</StackPanel>
</RibbonTextBox>
Итак, когда вы устанавливаете ширину RibbonTextBox, вы фактически не устанавливаете ширину текстового поля, а ширину всего элемента управления.
Я бы предложил создать класс, производный от RibbonTextBox, и реализовать в этом классе обработчик событий Loaded, как в примере, который вы приводили в своем посте. Но имейте в виду, что изображение, метка и рамка имеют дополнительное поле и отступы, что даст вам дополнительное пространство слева от текстового поля.