MSDN says:
"PublicNotCreatable means that other applications can use objects of this class only if your component creates the objects first. Other applications cannot use the CreateObject function or the New operator to create objects from the class."

You could use this way of instancing when you have a class that is dependent on a parent class, when it cannot "work" by itself. For example if you have an employee object, and you always need the company object (it's parent) for it to work.