Hola xavieremv,
muchas gracias por tu aportación. Justo acabo de conseguirlo, aunque no esta tan bien como lo que me propones. Ahora no tengo mucho tiempo para dedicarle a esto, pero cuando termine con el proyecto intentaré mejorarlo con tu aportación.
Dejo lo que he hecho por si le sirve a alguien, pero advierto que es la primera vez que uso jquery y puede que haya algun error o alguna cosa que se haga más sencilla. 
NOTA: en la explicación del primer post, por simplicidad puse que eran 2 dropdownlist, pero realmente son 3.
<?php $form=$this->beginWidget('CActiveForm', array(
'id'=>'admitir-form',
'enableAjaxValidation'=>true,
)) ?>
<?php echo $form->errorSummary($model); ?>
<div class="row1">
<div class="drop">
<?php echo $form->labelEx($model,'excluidos'); ?>
<?php echo $form->listBox($model, 'excluidos', $excluidos, array('multiple'=>true,'id'=>'e','width'=>'1000px'))?>
<?php echo $form->error($model,'excluidos'); ?>
</div>
<div class="botones">
<br>
<?php echo CHtml::button('>>',array('onClick'=>'excluidosAinscritos()')); ?>
<br>
<?php echo CHtml::button('<<',array('onClick'=>'inscritosAexcluidos()')); ?>
</div>
<div class="drop">
<?php echo $form->labelEx($model,'inscritos'); ?>
<?php echo $form->listBox($model,'inscritos', $inscritos, array('multiple'=>true,'id'=>'i'))?>
<?php echo $form->error($model,'inscritos'); ?>
</div>
<div class="botones">
<br>
<?php echo CHtml::button('>>',array('onClick'=>'inscritosAadmitidos()')); ?>
<br>
<?php echo CHtml::button('<<',array('onClick'=>'admitidosAinscritos()')); ?>
</div>
<div class="drop">
<?php echo $form->labelEx($model,'admitidos'); ?>
<?php echo $form->dropDownList($model, 'admitidos', $admitidos, array('multiple'=>'multiple','id'=>'a'))?>
<?php echo $form->error($model,'admitidos'); ?>
</div>
</div>
<div class="row buttons">
<?php echo CHtml::submitButton('Guardar',array('onClick'=>'actualizarVariables()') ); ?>
<?php echo CHtml::HiddenField('admitidos',' ',array('id'=>'admitidos')); ?>
<?php echo CHtml::HiddenField('inscritos',' ',array('id'=>'inscritos')); ?>
<?php echo CHtml::HiddenField('excluidos',' ',array('id'=>'excluidos')); ?>
</div>
<script language="JavaScript">
function actualizarVariables(){
$("#i option").each(function(){
$(this).attr("selected", "true");
});
var inscritos= $("#i").val()||[];
inscritos.join(", ");
$("#a option").each(function(){
$(this).attr("selected", "true");
});
var admitidos= $("#a").val()||[];
admitidos.join(", ");
$("#e option").each(function(){
$(this).attr("selected", "true");
});
var excluidos= $("#e").val()||[];
excluidos.join(", ");
$('#admitidos').val(admitidos);
$('#inscritos').val(inscritos);
$('#excluidos').val(excluidos);
}
function inscritosAadmitidos(){
var valor= $("#i").val();
var texto = $("#i option:selected").text();
if (texto!=""){
$("#i option[value='"+valor+"']").remove();
$('#a').append("<option value='"+valor+"'>"+texto+"</option>");
}
}
function admitidosAinscritos(){
var valor= $("#a").val();
var texto = $("#a option:selected").text();
if (texto!=""){
$("#a option[value='"+valor+"']").remove();
$('#i').append("<option value='"+valor+"'>"+texto+"</option>");
}
}
function excluidosAinscritos(){
var valor= $("#e").val();
var texto = $("#e option:selected").text();
if (texto!=""){
$("#e option[value='"+valor+"']").remove();
$('#i').append("<option value='"+valor+"'>"+texto+"</option>");
}
}
function inscritosAexcluidos(){
var valor= $("#i").val();
var texto = $("#i option:selected").text();
if (texto!=""){
$("#i option[value='"+valor+"']").remove();
$('#e').append("<option value='"+valor+"'>"+texto+"</option>");
}
}
</script>
<?php $this->endWidget(); ?>
Espero que a alguien le sirva
Un saludo