So if I understand correctly, they both ultimately achieve the same thing: making the local repository reflect what is actually in storage? The difference being that "synchronize" deletes everything from the local repository first then rebuilds it, whereas "consistency check" compares it "as is" and only updates the local repository where needed. Is that right?
That's the high level. The general rule of thumb is do not Synchronize unless you are instructed to do so by Support or if you've tried running a Consistency Check and that did not address the issue. Keeping in mind that Synchronizing the repository can be time-consuming depending on the number of objects in storage.