This is indeed related to weirdness of the cmd.exe command box. You can control the output encoding of Perl programs with the chcp command, but this does not affect the encoding of Perl's @ARGV.
I found this superuser.com anwser helpful to find out the default encoding for my machine, and it is this encoding which is applied to parameters which you pass to Perl programs, regardless of your chcp settings. So, most probably, your Windows system is using the cyrillic default encoding of codepage 1251 for input - but defaults to codepage 866 for output.
Cygwin is another story, of course. Contemporary Unix/Linux terminals are using UTF-8 as default encoding, and this is applied when you pass data from bash (the Cygwin shell) to your Perl program.