When smart contract is deployed, its byte code is executed starting from the beginning. This actually executes the constructor of the smart contract, and at the end of execution constructor usually loads into memory byte code of the rest of smart contract, i.e. byte code of the smart contract with constructor code stripped form the beginning, and returns offset and length of the loaded byte code.
This constructor execution may be treated as "verification" of byte code because EVM will revert the transaction in case byte code will try to do something illegal, e.g. execute opcode that EVM does not know, or jump to an instruction other than JUMPDEST, etc. Though only constructor code is "verified" at this stage.
When deployed smart contract is called by a transaction, EVM executed its byte code, as it was returned by constructor, and this execution may also be treaded as "verification". Though, only the parts of byte code laying across execution path are "verified".
In other words, miner "verifies" only those parts of byte code that he executes, and only when he executes them. The whole smart contract is never verified. Moreover, there could be unreachable parts of byte code, and that part will never be verified.