I think you completely misunderstand "support" here. Windows's cmd.exe "supports" single quotes, just like it supports a, b, 3, 7, 9, and =. They are just ordinary characters. A double quote has an entirely different kind of support. It will allow having spaces or other special characters as part of a command argument instead of their normal interpretation (where a space, for instance, would mean a break between arguments) and doesn't itself become part of the argument.
C:\windows\system32>c:/perl/bin/perl -we'print "Hello World\n"'
Can't find string terminator "'" anywhere before EOF at -e line 1.
Here, perl is getting as it's first argument "-we'print". It interprets the -w and -e switches, and finds that the code supplied for -e is the beginning of a single-quoted perl string, but with no end-quote, causing the error, just as if you had a perl program file consisting of just:
'print
If you add -leBEGIN{for(@ARGV){print$_}} before the -we, you can see that the space causes what comes after to become a separate argument to perl:
C:\windows\system32>c:/perl/bin/perl -leBEGIN{for(@ARGV){print$_}} -we
+'print "Hello World\n"'
Hello World\n'
Can't find string terminator "'" anywhere before EOF at -e line 2.
If you think cmd.exe does something special with single quotes, show an example.