I am puzzled by one question: why the model classes are available and accessible to all scripts in the application (that’s, available in controllers, in views, in custom application components, in widgets and portlets, and even in add-on modules) ?
Core components are available (e.g Yii::app()->component) because there are registered at application initiation. But those model classes are not registered. Right?
Yii uses spl_autoload_register(). This makes possible to register more than one autoload functions, e.g. when a third-party library requires its own autoloader.