No. Como tú mismo lo citaste. eval() devolverá null a menos que
en el código evaluado haya un return. Tan fácil como:
Código PHP:
$eval ="return call_user_func(\"".$funcion."\",".$params.");";
Te cuento que una vez quise hacer lo mismo, pero tuve bastates problemas sobretodo con las comillas. Y como dice
pateketrueke, es mejor que uses
call_user_func_array() y así te evitas todos estos problemas

Estudia esa función y te darás cuenta que hace exactamente lo que deseas.