Windows の方が、渡された UTF16 シーケンスを「そのまま」ファイル名として使ってしまうのでたちがわるい。
さらに画面上に表示するときだけ、合成されたグリフを出すので気づきにくい。

OSX だと、ほとんどのところで UNICODE 正規化をかけてくれるから混在しても同じファイルにアクセスできる。

ところが、正規化のことを予想していないアプリケーション/コードが、たとえばファイル名「だ」を作成したはずなのに
ファイルを列挙すると「た゛」が返ってきて驚く。というケースが発生するのだ。
OSX の API を普通に使えば問題は出てこないんだけど、
POSIX アプリが C の RTL だけ使うと、こういうことが表面化する