c++ is more universal, more quick and have more paths to extend language, that c# can't give rather.
c# can collect and erase unneeded memory blocks and it truely strong decrease the execution speed! Actually on c++ (with some exp) you can do like this with less speed lost.
If you need to develop the real game, the unique choice of language for you is c++ only!
And by the end

, if you want to become a really programmer, you need to have deep knowledge of c++.
Cabal consists of two parts, about which one the subj question?
Actually c# use the managed version of DirectX, but cabal client use the native one, use standart memory management (new and delete operators are exist) and use standart format of functions call (__stdcall, hard and unsafe), so my guess that client was written on c++.
I don't know about server language, because i haven't it at all.