Hello!
ngRepeat works by manually creating a new child scope programmatically for each repeated item. That scope does prototypically inherits from its parent, because otherwise it would have no way to assign variables with the same name, like "$index" and your repeater, to each element. They're copies of the same thing, so they must have their own (child) scopes.
Your directive with an isolate scope is then created when it gets compiled when the node is attached to the DOM, which now exists within that child scope. But your directive still has an isolate scope because these two things occurred separately. The scopes are not mixed.
I hope this helps clarify.
Josh