Pre-compiles (or chain extensions) should not forward errors from the chain verbatim to the contract. That is way too much of a API surface to keep realistically stable. Error handling should mostly happen off-chain. On-chain it should be a simple success or failure. With pre-compiles you can’t copy errors to the contract anyways anymore: The need to be converted to Solidity types anyways.
The dispatchable system was not designed to be exposed to smart contracts. This is why we build another abstraction (pre-compiles). Its their job to be stable.