Correct - not all contacts have all columns, but all possible columns should be available in the table. I don't know what the table component uses to regenerate the columns but it can't be based on just the first record in the data as that only has 8 keys.