If the datadir is a junction, Bitcoin-Qt crashes on startup.
NTFS junctions are transparent to applications which do not accidentally misuse some API. What I think happens is that Bitcoin-Qt uses an over-eager library call which, instead of checking whether the path exists as a directory, goes ahead and looks at whether it's also a reparse point, finds out that it is, decides that it's therefore not a directory, and attempts to create it.