Answer
Export to Excel generation runs under a different execution context than a normal Quick Report preview, and specifically needs an explicit EXECUTE grant on the custom package to the IFSSYS role — GRANT EXECUTE ON <owner>.<Custom_Package_API> TO IFSSYS;. Standard/built-in APIs already carry this grant, which is why only custom packages tend to hit this; granting EXECUTE to IFSSYS on the specific custom package used in the pipelined query resolves the Export to Excel failure without needing any cache refresh or other change.