O Oracle SQL não suporta asserções de lookaround, o que seria útil para este caso:
s/([0-9](?<![0-9]))/0\1/g
Você terá que usar pelo menos duas substituições:
REGEXP_REPLACE(REGEXP_REPLACE(col, '([0-9]+)', '0\1'), '0([0-9]{2})', '\1')
s/([0-9](?<![0-9]))/0\1/g
REGEXP_REPLACE(REGEXP_REPLACE(col, '([0-9]+)', '0\1'), '0([0-9]{2})', '\1')