I would not use Which to enter mathematical functions, as it's primarily meant for programming and not for representing mathematical objects (though the line between these is often blurry in Mathematica). This means that functions that deal with symbolic math are often aware of Piecewise, but they don't always know about Which (a few do).
Now, why are there holes in the plot? This is not a bug, it's a feature ;-) ... gone slightly wrong.
Plot does some symbolic processing on functions to detect discontinuities, and it will not plot the function there. Try these two inputs:
Plot[HeavisideTheta[x - 3], {x, 0, 6}]
and
ht[x_?NumericQ] := HeavisideTheta[x]
Plot[ht[x - 3], {x, 0, 6}]
Mathematica know that HeavisideTheta has a discontinuity and avoids drawing a line there when plotting. This behaviour is preferable in many situations, especially when plotting 2D functions (think e.g. branch cuts).
ht is defined in a way to hide its internals from Plot so it can't detect the discontinuity using symbolic methods.
Mathematica generally assumes that Piecewise might have a discontinuity at each break and does not go to the trouble to check whether you specified the Piecewise in a way as to avoid jumps. This is why you see the holes.
To turn off the feature, use the option Exclusions -> None. To read more, look up Exclusions.
It may be a better option to use ExclusionsStyle -> Automatic which doesn't turn off discontinuity detection (which can aid the adaptive plotting and result in better quality plots), just draws the gaps with the same style as the rest of the plot.