Succinctly the problem is, when compiled, once a table has been loaded by LoadXml none of the columns can have their width set programatically even when the table is subsequently reloaded by LoadCSV. In the IDE there is no problem. All this is on the desktop.
I see this behaviour consistently but am at a loss to explain it (which probably means it is something simple but I don't really understand the .NET data controls!). Poking round with Reflector I can see no significant differences between the IDE code and the compiled code.