The path is only valid inside XBMC if all code that deals with them knows to expect \ in a smb:// path.  The trick here is that \ is already a valid character in smb:// paths, so it's ambiguous.

It just so happens that you're probably safe doing so, due to CUtil::ValidatePath() being done in CURL::Parse().

IMO it's good code to just transform things into the correct form whenever you know the form you want.  In this case you want to take a DOS path and return a smb:// one.  Thus, you know you want to convert the slashes.  Mayaswell get it right.