A while back, there was a push to make COPY gzip-aware. That didn't happen, but COPY FROM PROGRAM did, and it scratches the same itch.
- writing unwanted columns to a temp/work table via COPY, and then immediately re-reading them
Without wanting to take away from the value of letting file FDW access FROM PROGRAM, I think this really merits a solution that applies to COPY as well. Variants on "how do I COPY just some columns from a CSV" is a real FAQ, and it doesn't seem like it'd be excessively hard to support. We'd just need some way to pass a list of column-ordinals or header-names.
Not asking you to do that work, just pointing out that this particular issue applies to COPY its self as well.