Personally I think it could be removed entirely. It's not like it's all that common for people to try to decode .o-files generated by other versions of pike at all.
Speaking about encode: How about putting the encode code for programs in a separate .so file, that is only loaded when dumping programs?
Likewise, decoding programs could at least be moved to a separate function to make the decode_value function smaller (usually gcc generates better code for small functions. Usually.)
I know it would be somewhat cumbersome, but it's the /by far/ biggest part of the code.