The innovation in Zig is the restrictions that limit the power of macros.
You use defmethod for overloading. Types check themselves.
Now none of this prevents you from extending lisp in such a way that lets you freeze the method dispatch (see e.g. https://github.com/alex-gutev/static-dispatch), but "a modern compiler will jmp past the type checks" is false for all of the CLOS implementations I'm familiar with.
1: SICL is a research implementation that has first-class global environments. If you save the global-environment of a method invocation, you can re-compile the invocation whenever a method is defined (or removed) and get static-dispatch. There's a paper somewhere (probably on metamodular?) that discusses this possibility.
To clarify, as you know CLOS isn’t the CL type system. I was particularly thinking about things like fixnum arithmetic.
The CMUCL and SBCL manual sections on code generation discuss this and it can be verified with DISASSEMBLE.
So add static types.