That was very helpful. Thank you. Made me realise what was going on in my table. (I say “my table” but I didn’t create it. Like you I try to avoid merged cells.)
In my table all of the cells in at least one row are merged. AppleScript’s remove tries to delete all the columns affected by the merge as in your example. But it fails to do so presumably because it would have to delete all the columns in the table.
Manually deleting a column deletes only the targeted column, even when the targeted column includes cells merged row-wise. (I see there is a similar difference in behaviour when adding columns: - telling AppleScript to make one new column before column “A” doubles the number of columns in my table, whereas the manual “Add Column Before” simply adds one column.)
So I need to unmerge all the cells in the table before removing the unwanted columns. Unfortunately most of the rows in which all the cells were merged contained long spiels of text. That brings up another problem. The table’s default text setting was “Wrap text in cell”, and unmerging results in each long spiel being squashed into the first cell of its row, the height of which is increased to accommodate the wrapped text. Changing the wrap setting doesn’t help because the text runs out of the table at right.
Finally, to make the table readable, I re-merge the cells in the rows that were originally merged. FWIW this is what I have done so far. For this test I want to delete columns D and E

tell application "Numbers" to tell front document to tell active sheet
tell table 1
--find rows with merged cells
set mergedrows to {}
set testcol to "C"
set nrows to row count
tell column testcol
repeat with jrow from 1 to nrows
set x to name of cell jrow
set k to first character of x
if k is not testcol then
set mergedrows to mergedrows & jrow
end if
end repeat
end tell
set the selection range to the cell range
unmerge selection range
--delete columns as required
set the selection range to range "D:E"
delete selection range
--make table readable again
repeat with j in mergedrows
merge row j
end repeat
end tell
end tell
Thanks again for giving me some clarity.