In 4.7, when managing a case, I try to reassign a role to another contact, but it adds a new one.
It should delete the old relationship. The button is an 'edit' pencil and the hover text says 'reassign'. There is a separate add role button.
The function that is invoked is relationship() in CRM/Contact/Page/AJAX.php but the "cid" value is not set (this should be the Contact Id of the current person holding that role). So the existing relationship is not deleted.