never thought about the zero case though, but im not sure its ever going there. how could it if its clamped at 4?
The clamping is being applied between updates. Imagine an object heading directly toward a wall with no sideways velocity and no bounciness. Upon impacting the wall, all the velocity along the normal of collision will be removed. Since all of the object's velocity was along the normal, the object's velocity is now zero. After the end of the time step, the clamping system attempts to normalize the velocity, gets a NaN vector, and everything explodes. There are many other physical situations in which this can occur even with bounciness. It won't happen very often, but it will be nasty when it does.
Even if the clamping is moved into the time step (using the event handler, for example), the minimum test should still be protected.
ive tried setting:
TargetElapsedTime = TimeSpan.FromTicks(088888);
TimeStepDuration = 1 / 120f
MaximumTimeStepsPerFrame = 4
that should all be the same timing right?
It's not exactly the same. It would need to be 83333 to 'match'. If you do plan on setting a custom Game update rate, it can be more convenient to use something like TimeSpan.FromTicks((long)(TimeSpan.TicksPerSecond / 120.0)).
Even after setting the game's target update rate to something that is very, very close to matching, the primary issue would still be unresolved. If the parameter-using Space.Update(dt) is used, then there will still be instances where it performs a number of time steps not equal to 1. In these cases, clamping could be missed for one or more frames.
Attaching the clamping to an event handler which fires within the execution of a time step addresses this issue.
Also, if your game has IsFixedTimeStep set to true, then internal time stepping is redundant. In that case, use the appropriate number of parameterless Space.Update() calls for the simulation time step versus the game's time step. If the timesteps match, then calling the parameterless Space.Update() once is all you have to do.
Whether or not this issue has anything to do with the choppiness is another question

Some external bug like you mention would likely be a better explanation if it's extremely visible.