No se si es de la manera mas fina, pero lo he hecho de esta manera.
Donde pone un "6" es el id del usuario que he modificado a pelo para probar, ahi lo que se tiene que poner es el id del usaurio a modificar.
Espero que les sirva
Dim AddRol As Boolean = True
'Roles del usuario
Dim userRoles As String() = objRoleController.GetRolesByUser(6, PortalId)
'REcuperar el Id del Rol que uno quiere del portal
'Si sabes el nombre del rol pues no te hace falta recorrer los roles de sistema
Dim idRole = objRoleController.GetRoleByName(1, "Cliente").RoleID
'ArrayList de Roles del portal
Dim rolesProtalArrayList As ArrayList = objRoleController.GetPortalRoles(PortalId)
'REcorremos los Roles del portal en busca del Rol Cliente
For i As Integer = 0 To rolesProtalArrayList.Count - 1
If rolesProtalArrayList(i).RoleName = "Cliente" Then
'Comprobamos si el usuario no tiene ese rol
For j As Integer = 0 To userRoles.Length - 1
If userRoles(j) = "Cliente" Then
AddRol = False
End If
Next
If AddRol Then
objRoleController.AddUserRole(PortalId, 6, rolesProtalArrayList(i).RoleID, Nothing)
Exit For
End If
End If
Next