I just ran into the positional de-sync today when I went to explore the edge of the landmass I started on. Three times now my boat has broken up because the server believes me to be in one position while the client shows me I am in another. I have also had the issue where I got out of the boat (into the water near some cobblestone I had built earlier) and the boat stopped being an interactive entity. Logging off my SMP server and back in fixed this. However, logging off while de-synced and in a boat caused another boat to just disappear (and for me to spawn on stuck in the ground underwater in the last position I was in while in the boat when I logged back in).
From my perspective, it appears the server is moving the boat faster than the client shows, and the faster you move the boat, the more out of sync the client-server gets. The worst example for me was moving about 500 blocks in a straight line, then turning slightly to stay well clear of an approaching island, only to have the boat get destroyed while I was still 10+ blocks away from the closest bit of shallow (1 block deep) water, let alone the island itself.
Yeah, I discovered you can do this by placing lily pads and watching the client place one where you appear to be (that doesn't actually exist if you get things resynced) and the server place that same lilypad where it thinks you are located. Using an animal on a lead would be much easier to track, however.
I have to revise my earlier guess that the server was moving faster than the client. After another few hours of being not really lost (I didn't know where I was, but I knew how I got there) while boating along the coastline, I noticed that the client moves faster than the server as far as your boat position is concerned. Reading the Minecraft Wiki on boats, I noticed that there was an update where boats were sped up. This makes me wonder if the server side code didn't get the exact same tweak. That or the two have some kind of rounding issue where the client rounds less than the server does.