Hmph. Works for me on RHEL6. I'm betting that Ubuntu has put in some weird security restriction, possibly an overreaction to the "shellshock" bug which was in the exported-functions feature.
Thank you both for looking at this. While my curiosity is still piqued I've solved the original problem without resorting to exporting a function through a psql invocation. Fortunately, exported functions are still seen by directly called bash scripts so a few other areas where I leverage that feature are still working.
I've haven't totally discounted local configuration interplay here - my bashrc is non-trivial and there a few differences between the setups besides versions - though a security enhancement in 16.04 seems plausible.