Chain extensions required charging gas for reading from/writing to the contract buffer. The existing precompiles in the SDK do not seem to follow this pattern, implying that perhaps the precompile framework automatically handles this based on the encoded data being passed/to from the precompiles via generated solidity interface types.
Some investigation should be done to confirm whether this is indeed the case, or whether any additional charging needs to be added as a best practice. This could be done at the start of the call function implementation of the Precompile trait for example.