This bug was solved by rewriting pseudo ethernet to XML/Python (T1635).
In the old node.def implementation there is no code path which tears down the old pseudo-ethernet/macvlan interface when the lower link is changed. The lower link can only be specified during creation.
One can delete and re-add the complete interface as a workaround. VXLAN has a similar limitation in 1.2 - so this big should be recorded but it is not critical.