We know that typical legacy address is made from pubkey -> sha256 -> ripemd160. On the other hand, ETH address is made from pubkey -> keccak -> "ending".
Now, if someone created a bitcoin address based on keccak, is it possible to spend from that address?
I'm going to say NO, but for a different reason than everyone else.
A legacy pubKeyHash is derived from "pubkey -> sha256 -> ripemd160" and the locking script is
OP_DUP OP_HASH160 <pubKeyHash> OP_EQUALVERIFY OP_CHECKSIG.
OP_HASH160 does the "pubkey -> sha256 -> ripemd160".
Now, if you want to use a bitcoin address based on keccak, you would use a locking script that looks something like this:
OP_DUP <keccak hash script> <pubKeyKeccakHash> OP_EQUALVERIFY OP_CHECKSIG, where
<keccak hash script> implements the Keccak hash algorithm.
Unfortunately, the Keccak hash algorithm probably cannot be implemented in Bitcoin's scripting language, I believe, simply due to a lack of the necessary of operators.
Somebody correct me if I am wrong.