I spent a little bit of time looking through the Quote fields with Eclipse's 'Content Assist' feature, but the closest thing I was able to find was the IsSyncing field. I tried setting that to true but knew of the error message that was surely about to pop up, "Field is not writeable." Like other Salesforce Is*Action* fields, Quote.IsSyncing is read only and you cannot write to it through Apex directly. I then tried to find a built in method that duplicated the "Start Sync" button found on a Quote's layout page, though I found no such functionality.
So how do you go about syncing? The secret to syncing a Quote with its Opportunity lies not in the Quote's fields, but in the Opportunty's fields. A quick glance through those fields reveals a look-up relationship called SyncedQuote, and this field (actually SyncedQuoteId) is what allows us to sync a Quote. The implementation is easy, just a simple assignment:
// Begin syncing Quote with Opportunity. Same as pressing the "Start Sync" button on Quote layout
parentOpp.SyncedQuoteId = quoteToSync.Id;
If you want to stop syncing the Quote or start syncing a different Quote, you simply adjust the Opportunity.SyncedQuoteId field accordingly.
A limitation that I want to note is that the above code only works in an Apex Class, at least as of API Version 19. This means that you can sync a Quote through Apex in an standard Apex Class or an Apex Test Class, but not through an Apex Trigger. If you try to sync a Quote in an Apex Trigger you will receive an error message explaining this functionality.