Because the alternative is worse.
There's a set-constant-buffer function for each major shader type because it is often desirable to have a completely different set of constants for each (and also, because one does not necessarily utilize every type of shader in all scenarios).
It's usually the case that each stage of the shader pipeline does a drastically different operation. The vertex shader transforms geometry from model space to clip space, the geometry shader manipulates or produces new vertex or adjacency information, the fragment shader makes color determinations, and so on. Because of the wildly different intents of each shader type, one will usually have very different constant inputs.
It would not make sense (and would be drastically limiting) to homogenize the interface such that you could have only a single constant buffer for every stage of the shader pipeline.
In your case, if you happen to be able to usefully use the same constant buffer for all shader stages, then its fine to set that buffer to each stage using the appropriate method. As your usages of each shader stage become more advanced, the likelihood that you'll want exactly the same data across every stage will decrease.