This is only true for higher level OS X APIs. ghc normally operates in the BSD layer, which mostly follows POSIX semantics; in particular, filesystem paths are bytestrings in the BSD layer, and only normalized in Cocoa APIs.
If I happen to be writing a program that only interacts with the
BSD layer, then I can use the POSIX-style FilePath.
But as an application writer, most of the time I'll be dealing
with Mac OS X paths that need to work correctly with Cocoa.