Every resource I've looked at seems to suggest that the HTLCs used by LN are roughly of the form
HASH160 <revokehash> EQUAL
IF
<Bob's pubkey>
ELSE
"24h" CHECKSEQUENCEVERIFY DROP
<Alice's pubkey>
ENDIF
CHECKSIG
Why was this was chosen instead of a variant based on the hash of the public key, similar to the standard P2PKH script? Something like
HASH160 <revokehash> EQUAL
IF
DUP HASH160 <Bob's pubkey hash>
ELSE
"24h" CHECKSEQUENCEVERIFY DROP
DUP HASH160 <Alice's pubkey hash>
ENDIF
EQUALVERIFY
CHECKSIG
I'm sure that this could be expressed more elegantly, but whatever. If my arithmetic is on, doing so would shave off 19 bytes per script (64 bytes for two pubkeys vs 45 bytes for the two hashes and 5 extra opcodes).
So what's the catch? Am I missing something important in the script? Any insight would be appreciated.