F2FS seems to do what you want, it'll reserve the original size of your file but compress what's actually written. Performance numbers might be massively inflated if your writes don't saturate the cache in RAM.
I've used BTRFS on SD cards before and it's mostly fine, but it will struggle massively if over 90% full, or if you have a < 1 GB volume and are, say, frequently updating a handful of files that together take up more than half its capacity. Mostly due to the CoW mechanism, it needs some headroom to make a copy of whatever files are being modified.