Each model has a base model class and a default model class and an interface. The default model is given as the model with which you will most likely develop; this provides the default features that the component offers and is used for small customizations to the models. The base model is the base on which the default model is created and is for creating custom models from scratch. The base model has the fewest built-in features, and the default model extends the base model.
If you want to provide different features or customize the behavior or appearance of your application, you can extend the base models to create new classes. For example, you can do this to create a template component for all the developers in your organization. By creating your own class based on one of the base models, you can create the customized class and provide it to all the developers to use.
Typically, if you are editing the models, use the default model classes. But if you want to create a custom model (from scratch), use the base model classes.
Each default model class contains the implementation of the interface for that model type as well as additional optional interfaces. Most of the functionality (that is, formulas, data binding, XML serialization, and so on) is optional in the model class, and is implemented in separate interfaces from the main model interfaces (such as ISheetDataModel) so if you want to implement your own model class, you can pick and choose which pieces of functionality you have in your model.
For more information on creating a custom model for a sheet, refer to Creating a Custom Sheet Model.