gitはUnicodeとか何も考えてないよ。パス名はバイト列として扱ってるだけだから。
でもWindowsのANSI APIは、パス名をローカライズされた文字列(日本ならcp932)とみなしてUnicodeに変換しちゃうから、
gitのやり方だとAscii文字列以外がおかしくなる。

Unicode APIを使ってくれれば問題は起きなくなるはずなんだが、
そのためにはgit側がパス名をUTF-16に変換してからAPIに渡す必要がある。
結局、Windowsではパス名は文字列であるという認識をgitが持ってくれないといけない。

よく知らないけどCygwin1.7はちゃんとこういう変換をやってるのかな。