I think it is by design. You can have string grid defined via fixed columns, defined via Columns[] or you can mix it (a few fixed + a few Columns[]). Property ColWidth[] is flexible, no matter how are columns defined. Columns[].Width is only for Columns[] and never for fixed columns.
Example: 5 fixed columns + 5 Columns[]
Code: Columns[1].Width := 120;
will change width of the 6-th column.