No. A notable example of a pubkey script that doesn't typically include addresses or keys is the nulldata standard transaction type. Examples of pubkey scripts that include public keys but not addresses are pay-to-pubkey (P2PK)[1] and "bare" multisig.
Although I'm not absolutely sure, I believe its allowed to have an empty pubkey script. (That is, the compactSize uint that describes the size of the pubKey script is 0x00.)
Note: Bitcoin Core's getrawtransaction RPC, decodetransaction RPC, and other RPCs will display the public keys in P2PK, bare multisig, and redeem scripts as addresses---which can be a bit confusing.
[1] P2PK was formerly used for most coinbase transactions, but that usage has mostly disappeared on mainnet with pooled mining. It's still a standard transaction type and quite common for coinbase transactions on testnet.