Here is an example where :: produces a problem in a FOR loop. It's the documented and supported way to embed comments in batch files whereas :: is merely an artifact of a particular implementation. I'm a little fuzzy on where exactly but that alone is enough to make me use REM exclusively. However, :: is known to misbehave in blocks under certain circumstances, being parsed not as a label but as some sort of drive letter. In neither case (at least on Windows 7) does the presence of redirection operators cause a problem. :: is essentially a blank label that can never be jumped to, whereas REM is an actual command that just does nothing.
Tl dr: REM is the documented and supported way to embed comments in batch files.