I think I see what you're getting at. You could create a temp table with all the column names in it, using a select from sys.columns. Then update that table with the column counts that you want. From there it's a select from the temp table and build your report as usual.
With this approach though, wouldn't I still need to re-design the report in BIDS each time additional columns are added? The only way I can see how to make the extra columns dynamic in the report structure would be to convert the data in to a format we can build a matrix report from, so copying each column to be a record i.e. convert the table from a :
ColumnGroupA ColB ColC structure to...
ColumnGroupA ColTitle ColValue
where ColTitle for record 1 would be ColB and ColTitle for record 2 would be ColC etc.
Not sure how to do that though. Any ideas?