It works much better in low bandwidth situations if UDP is also available because then things like "the user just closed this application, stop downloading this picture" can happen.
With TCP multi-megabyte buffers can end up forming and when you've shoved data into TCP there's no way to cancel sending it.
In all seriousness though it's useful if you use VNC just to remote monitor a screen and want to leave it open indefinitely.
Also RDP uses TCP and UDP which makes it bad for SSH tunnelling, as opposed to VNC which is TCP only and easy to tunnel.