Poner el string entre corchetes no hace nada aquí... La función de
eval convierte el arreglo a un string de vuelta, por lo que acabas haciendo:
eval('form_x.input_1.value, form_x.input_2.value, form_x.input_3.value, form_x.input_4.value');
Lo cual evalúa al último valor separado por coma (así funciona el operador de la coma en javascript).
Si lo que quieres es convertir el string en un arreglo, la forma más fácil es hacer un split...
let arr = string.split(', ');
Edit:
Me doy cuenta que el arreglo tal cual no es exactamente como lo que quieres. Si esas son variables y propiedades de javascript puedes hacer dos cosas.
Hacer eval de un arreglo en forma de string:
let arr = eval(`[${string}]`);
O hacer eval a cada elemento de la lista:
let arr = string.split(', ').map(eval);
Probablemente sea mejor una llama directa de
eval (dependiendo del contexto de las variables).
let arr = string.split(', ').map(e => eval(e));