Obviamente al utilizar un solo formulario y type text en los campos, cuando envíes el formulario se van a enviar todos, es su comportamiento natural.
Como vas a utilizar array bien podrías establecer las claves del array con el valor del value del checkbox, así poder detectar los nombres que corresponden a esos checkbox.
Código HTML:
Ver original<input type="checkbox" name="codigo[]" id="codigo" value="{$lista[i]->codigo}">
{$lista[i]->codstud}
</td><input type="text" name="nombre[{$lista[i]->codigo}]" id="nombre" value="{$lista[i]->nombre}">
Por lo que en php acceder a el asi:
Código PHP:
foreach ( $_POST['codigo'] as $k => $v ) {
echo $_POST['nombre'][$v];
}
Hay otros métodos de hacerlo. Pero este te podría valer.