In your setup with Row heights set to auto the grid's ActualHeight will be at minimum the sum of the heights of TextBlocks. So when you animat it to a smaller value the ActualHeight does not change however the size given to the grid to be rendered is set with Height property. Actually what you see is the grid being clipped not resized.
With Height="*" it works because the size of the grid is at minimum the size of the first TextBlock only. However if you animate it to 0 you will se the same behaviour.