Мне удалось воспроизвести это с помощью Border в ScrollViewer (но не без ScrollViewer), поэтому я предполагаю, что прокрутка как-то все испортила.
Установка MaxWidth в левом столбце (очень большая MaxWidth, которая не должна иметь практического эффекта), казалось, исправила это:
<Window xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
Height="300"
MinWidth="450"
Width="450"
Title="Window3">
<Grid>
<Grid.ColumnDefinitions>
<ColumnDefinition MinWidth="200" Width="*" MaxWidth="10000"/>
<ColumnDefinition Width="Auto"/>
<ColumnDefinition MinWidth="200" Width="*"/>
</Grid.ColumnDefinitions>
<Button
Name="Button2"
Grid.Column="0"
Margin="5"
Content="Button2"/>
<GridSplitter
Width="2"
Grid.Column="1"
HorizontalAlignment="Center"
Margin="5"
Panel.ZIndex="1"
VerticalAlignment="Stretch"
ResizeBehavior="PreviousAndNext"
ResizeDirection="Columns"/>
<WebBrowser Grid.Column="2" Margin="5" Source="http://www.google.com"/>
</Grid>
</Window>
Похоже, что в какой-то момент размер звезды переопределяет тот факт, что свободного места не осталось, поэтому, когда левый столбец достигает ширины = 200, а GridSplitter изменил размер звезды в правом столбце на 3 * или около того, столбец будет 600 независимо от того, есть место или нет.