It sounds like everyone is in agreement that I should get rid of the single COW GUC tunable and provide two different tunables instead. I will update the patch to go back to the original name (wal_recycle) for the original WAL recycling behavior. The default value of that will be true to provide the existing behavior. This matches my original proposal from last year. I will add a new tunable (wal_init_zero) which will control the zero-fill behavior for the WAL file. Again, the default value will be true and provide the existing behavior. Both of these could (should) be set to false for a COW filesystem like ZFS.
If anyone objects to this new approach, let me know, otherwise I'll start preparing an updated patch.
I have attached a new version of the patch that implements the changes we've discussed over the past couple of days. Let me know if there are any comments or suggestions.