Я не уверен, что ScrollViewer виноват первым. ListBox использует StackPanel с вертикальной ориентацией в качестве ItemsPanel. А вертикальная StackPanel не ограничивает высоту дочерних элементов.
Вместо изменения пространства контейнера ограничьте размер DataGrid, установив DataGrid.MaxHeight
, и StackPanel не даст ему больше высоты, чем этот предел. И тогда ScrollViewer будет ограничен общим размером всей DataGrid.