I’d say the opcode vs precompile question is a bit different than the state design question.
Evidently “execution state” has some technical meaning here that excludes this sort of thing
when we say “execution state”, we mean the thing committed to by the state root in each block header
but assuming the beacon roots live somewhere, there is an access question – do we have an opcode or just frame it as a precompile so we can just leverage the CALL
infra? every opcode we add does introduce new semantics to the EVM virtual machine, whereas just CALL
ing a precompile is something done all the time so its less of a ask to just go via CALL