You have two functions. set and reset - just merge them. Loop through existing columns and add columns to $new array, and add in the new column(s) when you're at the point in the array where you want them. Finally return the $new array.
Actually the [Title] and [Date] column are by-default. I'm not adding 'em again. I'm just adding my columns: [ID][Thumbnail][Shortcode]. But you know by default they are adding after the default columns: [Title][Date][ID][Thumbnail][Until][Shortcode]
But I want them to be: [ID][Thumbnail][Title][Date][Until][Shortcode]
If I `unset()` any column, I can't reset 'em. And I already explained that, even with multiple `if()` conditions, I failed to sort 'em.