Is not possible to ignore the header and provide a different set of columns because the @columns is compared against the read line. It should be possible to ignore the csv header line and provide a custom array of column names. This way the logstash filter can be column name agnostic.
if (@skip_header && (!@columns.empty?) && (@columns == values))
event.cancel
return
end