It’s a nice trick. A lower technology approach would be to define a second function outside of the class:
class Storable a where
sizeOfImpl :: Int
sizeOf :: forall a -> Storable a => Int
sizeOf t = sizeOfImpl @t
That way it’s also marginally easier to define instances (you don’t have to explicitly ignore the type variable).
instance Storable Int where
sizeOfImpl = 8
EDIT: Oh, and I used something similar to the trick in withST
in TypeAbstractions in GHC 9.10 - #5 by tomjaguarpaw