Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Target.EntireColumn.AutoFit
End Sub
Just as an update, I've narrowed this down to being caused by an add-in.
Thank you all for your help.
Still totally frustrating, but maybe the developer will fix it sometime.