The idea was that you inherit from two things: the parent (normally meaning the parent view) so you can have variables scoped to a view hierarchy, and the prototype so you can inherit behavior.
The original Newton hardware had hardly any RAM (I think the NewtonScript heap was about 50k) and the prototype pointer was also essential to allow most of the object to reside in ROM (there was 4MB of ROM).
So bottom line, we had two specific reasons for prototypes and that became two specific slots. Self took a more general approach (it is a research language, after all).
I’d have to think a while about whether to do it differently now. As a comparison, look at the schemes JavaScript frameworks come up with for scoping data to a view hierarchy. In Newton that was just a straightforward variable reference.
Remember that NewtonScript was not intended as a general-purpose language — thus the name!