Very interesting discussion! 😃
I come from a programming perspective and this is the way I see it. All "Play:" effects triggers at the point when the card is being played and the text ("Play: Choose a house. Your opponent cannot choose the house as their active house until Restringuntus leves play." ) has to be evaluated at that time. So I look at the words "house" and "your opponent" as variables that can contain different values. In this case the word "house" would be a new variable. And it would also be empty until a house is chosen. After the decision is made the variable has gotten a value assigned to it and the word "house" now contains (in this case) Brobnar.
The last part of the text "Your opponent cannot choose that house as their active house until Restringuntus leves play" has an on-going effect. So in other words it's a "while loop" (again in programming terms ). While it is true that Restringuntus is in play the effect keeps running.
And now comes the real question (at least for me). Are the words "your opponent" a new and empty variable when the card is played, just like the word "house"? Or are that variable already assigned (in other parts of the code/rules)? I would argue that "your opponent" already has a value when the card is played and that the card does not assign any value to them. The card is simply pointing to "global" variables. So as long as the "while loop" keeps running the card is pointing, like an arrow, to "your opponent". So if another part of the code/rules changes the value of "your opponent" (in this case Collar of Subordination). I would not se it like the "Play:" effect gets re-evaluated or triggered again. It is simply continuing to pointing to the global variables that now have changed. So therefor the effect of the card now applies to the new opponent.
Hehe hope that this makes sense to someone