Hi Mike,
I can't remember the exact reasons, but I know there were issues trying to get a proper Sync behavior through Direct Commands... which is why we didn't ship any Sync versions with the NXT toolkit. When the command is issued by a program on the brick, it sets both motor ports values simultaneously. If you dig in to the Sync Unlimited NXT Library VI, you'll see we use the NXTOutputMulti property node to do this. Unfortunately there is no Direct Command equivalent.
However, in general I suggest that you don't try to do any fancy motor control through Direct Commands anyway. Since there is a latency in sending the message from the PC to the NXT and back again, it's very hard to send "simultaneous" commands as well as hard to ensure the motors stop at the right position or time (in the case of a Distance or Time based movement). Instead, put anything to do with your motor control algorithm down on a program running on the NXT. There you'll have access to the Sync commands and 1ms response time with the motors. After that, build a little Bluetooth messaging into the program on the NXT, then write a Direct Command program that sends a Bluetooth message that your NXT program will then interpret as a "Sync Unlimited". This is also a great way to build really fancy Direct Commands (like a "Drive this Path" command, which can be done by flattening a cluster of (Power, Distance, TurnRatio) to a string and sending it across). The only thing that this requires is that you actually have a program running on the NXT... hopefully that doesn't get in your way. Note that you can also programatically download an .rxe file and start a program up with Direct Commands, so it's pretty easy to make sure the program is running.
Hope that helps. Best of luck!
Brady