El espacio inicial adicional es para el signo menos potencial. Para quitar el espacio puedes usar FM en el formato:
SQL> select to_char(12,'FM000') from dual;
TO_C
----
012
Por cierto, tenga en cuenta que to_char toma un argumento NÚMERO; to_char('012') se convierte implícitamente en to_char(to_number('012')) =to_char(12)