Alright, since no one objected (and there was some support), I added in code to SMW that prints out a header row for the CSV format, conveniently suitable for the "CSV with header" option in the External Data extension. If you're using the very latest version, you can get rid of the header row by adding "|headers=hide" to the query.
Are there any objections to adding handling of the 'headers' parameter to the CSV inline-query format? This would add a header row at the top of the CSV output. It looks easy to implement; the only issue would be that, since 'headers' is on by default (you have to set 'headers=hide' to disable it), it would change the output of all current CSV-format queries. I don't know if that's a big concern.