Hola:
El comportamiento es el que veo que sabes, y no se puede cambiar... pero si en vez de el value="si", pones el orden ya tienes el problema resuelto, ya que si se marcan se envían y si no no, si te llegan 2 valores "si" tan solo sabes cuantos se marcaron, pero si te llega "0" y "2", se deduce que se quedó sin marcar el "1"... el tratamiento con radios, aunque la descartes, puede ser también realizable, pero poniendo un par de radios por cada elemento checkbox que ahora estás usando, y puedes usar nombres del tipo documento[0] en cada radio...
<input type="radio" name="documento[0]" value="no" checked="checked" />
<input type="radio" name="documento[0]" value="si" />
<input type="radio" name="documento[1]" value="no" checked="checked" />
<input type="radio" name="documento[1]" value="si" />
<input type="radio" name="documento[2]" value="no" checked="checked" />
<input type="radio" name="documento[2]" value="si" />
Con este sistema el precesamiento en php es igual que si el nombre fuese "documento[]"...
Para otro resultado usando javascript sería muy complejo y en mi opinión nada recomendable.
Saludos