I found a "sort-of" workaround.
If I load a persistence state then all these broken parts about the grid suddenly start working. Furthermore, other annoying things about the grid that I didn't mention (column headers not staying at the top when scrolling, column headers not quite lining up properly with the columns) all get fixed too.
It looks like to get the grid working, I need to auto-load a persistence state when the page loads. This is annoying and quirky but seems to work. Not an ideal solution.