But why?

Spline interpolation works by making sure the curve passes through a given point with continuity. That means there can't be a hard peak at a point (that's what linear and hold types are for).

It works out the smoothness by averaging the exit angle from the previous key, and the entry angle of the next key. Once it works out the angle of the tangent, it forces the curve to follow suit. That's why an extreme value just before or just after a hold will create a more noticable drift.

By placing 2 keys with the same value one frame apart, you're forcing the entry angle to the 2nd key to be zero, no matter what precedes the first key. In fact, if you zoom right in on the area between the two keys, you'll see AM does do a big nasty drift, but because it's in a sub-key area, it never gets rendered. Unless of course you change the fps of your project, in which case you'll see some really weird things happen...

In a similar vein, zero slope forces the entry and exit angles of the tangent to be 0, so the tangent is alwasy perfectly horizontal. That means that for a few frames before and after the 0-slope key, the curve will not move. This is handy for setting the start and end of cycles, because normally the motion will bounce quite abruptly, 0-slope will get rid of this, at the expense of some control.

All the above is easier to understand in pictures, so here goes:

Here's the tangent as it is with spline interpolation. Because it's wide, and at an angle, the curve before and after that point will be pulled towards the direction of the tangent.

Here's the tangent after using a double key. See how the tangent is now basically halved? The side where the tangent is gone will draw the curve in a straight line towards the point, while the other side can still curve smoothly away.

Or is it? Here's the same curve, but zoomed right up close to the region between frames 19 and 20. As it turns out, the motion is still curved, but because it's in a region between frames, we never see it. Clever eh?

And here's the same curve again, but this time with all the keys having zero-slope interpolation. You can see the tangent's have no angle on them. That's what the 'zero slope' refers to, the tangent's angle is 0.

Notice how the curve leaves the second key. It is pulled down slightly before curving up. When you play this, the motion will start slowly, then accellerate, and when it gets close to the next key, it will slow down, stop, then start slowly accellerating towards the next key. This may be what you want, or it may not. It gives a kind of 'floaty' motion that I find distracting, so I usually avoid 0-slope.

Back to the tutorial 1