It does cause overhead but define what's "too much"? Doing a few (thousand) calculations is nothing on a modern CPU or even mobile even if every frame. What you should be careful, instead, is garbage - especially on mobile/consoles. A rule of thumb
is "Don't make garbage!" :) Garbage collection is furthermore unpredictable so it will just happen at the worst possible time.
If you use XNA note that it already has a fixed time step implementation (IsFixedTimeStep=true).
More info here:
For another example the Unity3D game engine (which runs on mono) has a FixedUpdate implementation built-in as well since it's such a fundamental technique in game physics.
Basically you should always use a fixed time step - it's a necessary evil even if there is overhead. The alternative is often worse and might lead to unstable physics. Humans don't like unstable (jittery) physics because we reject it on a subconscious level
whereas we might tolerate other imprecision better.
Gaffer's method is just one implementation for a generic game engine which can be applied to XNA when IsFixedTimeStep=false. But there is even more you can do with state buffering and intra/extrapolation without even going into determinism and networking.
Check this for example for an extremely in-depth solution to multithreading the game loop that uses a triple-buffered physics state with an attempt at minimal locking: