The quote speaks of the type of the variable, not of the type of the object instance the variable refers to. The variable type is statically known so all decisions are static.
The C# compiler resolves the exact method to call and encodes it into the IL. If the referenced assemblies do not change, the JIT does not have to do any method resolution by itself. The C# compiler does that because it wants to apply C# semantics, not CLR semantics.
To answer your edited-in questions:
- The JIT cannot look at any object reference because it needs to decide statically. It looks at the type that the element on the stack has, wherever that element came from. In verifiable code this is unambiguous. The variable type does not influence method binding though (IOW your question 1 is irrelevant).
- Yes, a method is referenced by assembly+type+method name and signature incl. return type. Very precise.