It is difficult to know how to size columns in a table in program, especially when creating the table dynamically. The best you can do is guess based on the estimated size of what is going to be returned.
If you double-click the heading in between two columns it auto-sizes the left column. It would be useful if there was a function or attribute which could do this.