I've just realised why it was inconsistent.
If I press the sync button on the cradle, it works and syncs every time. If I use the UI to try to do it, it bombs!
It hadn't occurred to me that they might not be interchangable. Doh!
In fact, after hotsyncing using the cradle button, any touch on...