Daniel,
I've recently been through this process and think perhaps using EMF modelling might be a better approach unless you *have* to have your own custom model for other reasons. Even then, it might be better to concentrate on mapping your model to an EMF model.

Our approach was to create a model manager that responds to workspace and editor changes and polls its listeners with these events.

You register your content provider as a listener (and implement the listener interface on it) then respond to the events sent to your content provider by your model.

The content provider can then modify the model of your view and request the viewer to refresh the corresponding tree elements.

This approach is pretty laborious but has the advantage of fine grain control of all aspects of model and workspace changes.

I have a custom project nature whose main artifact is a file in some custom XML format. Additionally I've created an object model representing this artifact. I'm using the CNF to display my model.

Is there a best practice approach to keep the model in sync with the tree view?

I'm thinking of:

Adding/Closing projects
File is modified in the file system
Some action modifies the object model.

If you are thinking of having this be part of the Project Explorer, then using the CNF seems to be the right way to go (note I presume you can also use EMF to help you but they are two different things depending on what you are doing). The use of the CNF within the project explorer will allow your model objects to be found and displayed the way you want them in the Project Explorer (which is an implementation of the CNF).

You would configure the CNF to have your Navigator Context Extension be invoked on your project nature and then within that provide the necessary content and label providers to work with your model objects and display them the way you like. This is particularly useful if your model objects have to interact with other things that are displayed in the Project Explorer (like resources or Java objects).

If you can provide more details of what you are interested in, I can try to help further (I feel like my response is kind of vague).