Ci stavamo ragionando insieme ad un mio amico fino ad un'ora fa e siamo arrivati a questo punto.
codice:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>jquery box</title>
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>
$(function(){
	
   var quanti = 4;  // quanti checkbox abilitare (tranne quello selezionato!)
   var quanti_primadopo = quanti / 2;
	var selezionati = 0;
	
    $(".box").each(function(i){
		$(this).live('click', function(){
		if($('input:checkbox').is(':checked') && selezionati<1){
			
			selezionati++
			$('input:checkbox').not(':checked').attr("disabled",true)  // disabilita tutti i checkbox
			$(this).removeAttr("disabled")  // abilita il checkbox corrente
			
			// scorre i precedenti
			overflow = 0;
			curcheck = $(this);
			for (k=0; k < quanti_primadopo; k++){
			   curcheck = curcheck.prev();
			   if (curcheck.length)
					curcheck.removeAttr("disabled");
				else
				   overflow++;
		   }

			// scorre i successivi
			overflow2 = 0;
			curcheck = $(this);
			for (k=0; k < quanti_primadopo + overflow; k++){
			   curcheck = curcheck.next();
			   if (curcheck.length)
					curcheck.removeAttr("disabled")
				else
				   overflow2++;
		   }

		   if (overflow2){
				// scorre nuovamente i precedenti
				overflow = 0;
				curcheck = $(this);
				for (k=0; k < quanti_primadopo + overflow2; k++){
				   curcheck = curcheck.prev();
			   	if (curcheck.length)
						curcheck.removeAttr("disabled");
					else
					   overflow++;
		   	}
		   }

		}else if($('input:checkbox:checked').length==0){
			$('input:checkbox').removeAttr("disabled")  // abilita tutti i checkbox
			selezionati=0
		}
	})
	})
});
</script>
</head>

<body>
1<input name="uno" class="box" id="uno" type="checkbox" value="">
2<input class="box" name="due" id="due" type="checkbox" value="">
3<input class="box" name="tre" id="tre" type="checkbox" value="">
4<input class="box" name="quattro" id="quattro" type="checkbox" value="">
5<input class="box" name="cinque" id="cinque" type="checkbox" value="">
6<input class="box" name="sei" id="sei" type="checkbox" value="">
7<input class="box" name="sette" id="sette" type="checkbox" value="">
8<input class="box" name="otto" id="otto" type="checkbox" value="">
9<input class="box" name="nove" id="nove" type="checkbox" value="">
</body>
</html>
Appi pazienza se posto il codice ma non sapevo dove uppare il file.
In pratica è come il tuo "Versione box adiacenti, ma il primo e l'ultimo si possono spuntare 2 e 3 o 5 e 6 "
Lo posto qua per far vedere implementazioni diverse risultati uguali.
Grazie!!!!

p.s.
Visto che è stimolante come problema oggi abbiamo trovato un'altra piccola aggiunta da inserire che sarebbe proprio la ciliegina sulla torta.
I box selezionati non devono avere vuoti gli uni rispetto agli altri.
Cioè alla fine non posso avere selezionato 1, 3, 4, 5 saltando il 2 (è un esempio per far capire).
Noi ci ragioniamo, vediamo che viene fuori