mira este ejemplo...
existen los mismos input en los 2 select.. deberia el primero estar vacio...   
Código HTML:
Ver original<!doctype html>
    
<body onload="limpiarSelect1('delete')">     select 1
    <select name="uno" id="uno" multiple="multiple">         
    select 2
    <select name="dos" id="dos" multiple="multiple">         
 
    /*
        @param modo 'delete' ó 'disable'
    */
    function limpiarSelect1(modo)
    {
        modo = modo || 'delete';
        
        if (modo!='delete' && modo!='disable')
            throw new Error('Modo incorrecto');
        
        sel1 = document.getElementsByName('uno')[0];
        sel2 = document.getElementsByName('dos')[0];
    
        conj1 = sel1.getElementsByTagName('option');;
        conj2 = sel2.getElementsByTagName('option');;
        
        // recorro el primer select 
        for (var i=0; i<conj1.length;i++)
        {   
            // recorro el segundo select    
            for (var j=0; j<conj2.length;j++)
        
            if (conj1[i].value==conj2[j].value)
            {
                console.log(modo+' para '+conj1[i].value);
                if (modo=='delete')
                {
                    sel1.removeChild(conj1[i]);
                    i--;  // toca re-ajustar indice luego de matanza :)
                }else
                    conj1[i].disabled='disabled'
            }   
        }   
    }