ItemsPresenterを直接参照することでこれを解決しました。これを行うには、ビューボックスのテンプレートを定義し、ItemsPresenterという名前を付ける必要がありました。
テンプレートは次のようになります。
<ListView.Template>
<ControlTemplate TargetType="{x:Type ListView}">
<Border x:Name="Bd" BorderBrush="{TemplateBinding BorderBrush}" BorderThickness="{TemplateBinding BorderThickness}" Background="{TemplateBinding Background}" Padding="1" SnapsToDevicePixels="true">
<ScrollViewer Focusable="false" Padding="{TemplateBinding Padding}">
<ItemsPresenter x:Name="MLVItemsPresenter" SnapsToDevicePixels="{TemplateBinding SnapsToDevicePixels}"/>
</ScrollViewer>
</Border>
<--SNIP-->
</ControlTemplate>
</ListView.Template>
そして、幅のバインディングは次のようになります。
Width="{Binding ActualWidth, ElementName=MLVItemsPresenter, Mode=OneWay}"