Hola JoAnCa,
Me temo que algo falla en el mecanismo de Delphi a la hora de asignar los anchos de las columnas del DBGrid en diseño. He mirado en el código de la VCL y es un sistema algo rebuscado, cada vez que asignas una propiedad de una columna, objeto TColumn, ese valor se guarda o no dependiendo de un flag interno llamado
IsStored, y además se lleva una relación de las propiedades que se han cambiado para saber si se deben almacenar o no (en el .DFM), así más tarde, cuando se carga el formulario, el Grid sabe de dónde debe tomar los valores, si del TColumn, del Grid o del DataSet vinculado (un pequeño jaleo que creo es la causa de estos problemas).
Tras hacer algunas pruebas, también me han sucedido comportamientos extraños, redimensionaba con el ratón las columnas y en unas ocasiones al reabrir el DataSet las columnas volvían a un tamaño diferente, y más tarde he conseguido que se quedaran como las dejé.
Podrías probar, si tienes los campos del DataSet definidos como persistentes, de asignarles la propiedad DisplayWidth, y en teoría las columnas de los DBGrids que vincules deberían tomar ese ancho. Supongo que esto no sucede en todas las versiones de Delphi y que estará corregido en alguna, yo lo acabo de probar en Delphi 4, algo antiguo ya,
Saludos