есть еще один фактор в этой ситуации: RowDefinition с Height="*"
занимает место, даже если внутри этой строки нет видимых элементов (или вообще нет элементов). Вот как работает Grid.
представить еще одну панель: UniformGrid с 1 столбцом. UniformGrid даст одинаковую высоту для ListViews, когда оба видны, и всю высоту для второго ListView, когда первый ListView скрыт.
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<CheckBox Grid.Row="0" x:Name="switch" Content="Switch" IsChecked="True" />
<UniformGrid Columns="1" Grid.Row="1" >
<ListView Visibility="{Binding Path=IsChecked, ElementName=switch, Converter={StaticResource BooleanToVisibilityConverter}}" >
<ListViewItem Content="11111111"/>
<ListViewItem Content="22222222"/>
<ListViewItem Content="33333333"/>
<ListViewItem Content="44444444"/>
<ListViewItem Content="55555555"/>
<ListViewItem Content="66666666"/>
</ListView>
<ListView>
<ListViewItem Content="aaaaaaaa"/>
<ListViewItem Content="bbbbbbbb"/>
<ListViewItem Content="cccccccc"/>
<ListViewItem Content="dddddddd"/>
<ListViewItem Content="eeeeeeee"/>
<ListViewItem Content="ffffffff"/>
</ListView>
</UniformGrid>
</Grid>
другой альтернативой является изменение второй строки ListView и строки Rowspan при падении первого ListView:
<Grid Grid.Row="1">
<Grid.RowDefinitions>
<RowDefinition Height="Auto" />
<RowDefinition Height="*" />
<RowDefinition Height="*" />
</Grid.RowDefinitions>
<CheckBox Grid.Row="0" x:Name="switch" Content="Switch" IsChecked="True" />
<ListView Grid.Row="1" Visibility="{Binding Path=IsChecked, ElementName=switch, Converter={StaticResource BooleanToVisibilityConverter}}" >
<ListViewItem Content="11111111"/>
<ListViewItem Content="22222222"/>
<ListViewItem Content="33333333"/>
<ListViewItem Content="44444444"/>
<ListViewItem Content="55555555"/>
<ListViewItem Content="66666666"/>
</ListView>
<ListView>
<ListView.Style>
<Style TargetType="ListView">
<Setter Property="Grid.Row" Value="2"/>
<Style.Triggers>
<DataTrigger Binding="{Binding Path=IsChecked, ElementName=switch}" Value="False">
<Setter Property="Grid.Row" Value="1"/>
<Setter Property="Grid.RowSpan" Value="2"/>
</DataTrigger>
</Style.Triggers>
</Style>
</ListView.Style>
<ListViewItem Content="aaaaaaaa"/>
<ListViewItem Content="bbbbbbbb"/>
<ListViewItem Content="cccccccc"/>
<ListViewItem Content="dddddddd"/>
<ListViewItem Content="eeeeeeee"/>
<ListViewItem Content="ffffffff"/>
</ListView>
</Grid>