I've been using Git in Windows directly from cmd.exe for a long while with plenty of success. I rarely use MSYS shells because they're only a partial solution and require you to think differently. I am rather sick of cmd.exe though. I finally went out and found PyCmd, which has a few extra UNIX-like features that can be real time-savers: more intelligent tab completion (e.g., expand environment variables in paths), word-based tab completion, and expand ~ to %HOME% or %USERPROFILE%.
As for Git's modular design, there's a very good and intelligent reason for it, and ideally that is how all software would be written. As for your shit anti-virus software running on your shit operating system, you should be blaming your anti-virus software and operating system, not Git.
AFAIK, Git is predominantly written in C, bash, and Perl. I am unaware of any Ruby and I somewhat doubt that they'd use it since they already have plenty of capable language platforms (and I think the developers are mostly Linux-based [C and bash] and Perl-based). Note that every Git command is implemented as a separate process, and many of them are combinations of others. Without knowing the internals, I imagine that git-clone is likely a combination of git-init, git-remote (which is probably built on git-config), git-fetch, and git-checkout (and there are probably lower-level commands within these too). Then there's also the wrapper git process on top of that. In UNIX-based operating systems processes and forks are extremely cheap and this works wonderfully. In Windows land, it's a rather bulky solution, but that is again a deficiency with your operating system and not your source code management software.
If Git would actually work fine with just cmd.exe, why is is Msys, Cygwin, or Bash always mentioned?
...because cmd.exe sucks, and most people that would choose to use Git are already familiar with Bash shells and UNIX tools that are available with MSYS or Cygwin. Also, part of what makes Git's modular design useful is linking the processes together, which is only partially practical with cmd.exe (for example, I don't think it has a concept of a subshell).