I think you can determine visibility and order as well; the visible columns would be the selected items in your ListBox, and the order would be the order in which they appear in your ListBox
So when you alter the contents in your listbox (adding/removing items, changing the order in your listbox) this would also alter your model.
If you now create a template element for the table's columns, you can now simply use the 'bindColumns' method:
var oColumnsTemplate = new sap.ui.table.Column({
label : new sap.ui.commons.Label().bindProperty("text", "columnName")
});
table.bindColumns("/columns", oColumnTemplate);
and the selected ListItems will now render a table with columns in the correct order.