Your first and second method are equivalents since cloning means creating a new objecttype but based on the properties of the instance you cloned from instead of starting from default properties.
So in the end we're down to using multiple instances or multiple objecttypes.
First, I don't think there's any difference in terms of performance. The text plugin uses some cache system to avoid garbage collection, but this cache system is shared by all the objecttypes created from this plugin. So performance shouldn't be considered here.
Now in term of project management, indeed, creating instances (copy) lower the number of object type to handle.
The catch is when you want to manage them by event: if you use one objecttype by text, you don't have to worry about filtering them using conditions (picking).
To me, that's not really a problem though.
I try to use instances of one objecttype when this objecttype represents the same "conceptual" idea, and I just use instance variables to tell them appart.
For instance, for a quizz game, I could have a "question" objecttype and an "answer" objecttype and put in the layout one instance of "question" and 4 instances of "answer", put an instance variable to tell which is which, and using events pick them one by one (in a loop) and then fill them during runtime.
(and instance variable isn't that necessary here, you could use the IID)
So my answer would be that there's no best way. Just pick the one that makes the most sens to you at the moment