In general you may want to avoid very large SQL statements, and especially the INSERT ALL FROM DUAL trick. I don't know why, but I've seen several cases where Oracle will take a very long time to parse large SQL statements. For some reason "insert into table_name (select 'asdf' from dual union all select 'asdf from dual ...)" seems to work much better, but it still starts to slow down after a while.
I once timed different sizes of similar queries, and the parse time seemed to grow exponentially at some point. That was on 10.2.0.3.0 I believe. But I can't reproduce the issue on 10.2.0.1.0 right now, maybe it's only a bug for a particular version?
I'd recommend that you use the UNION ALL version instead, and decrease the amount of rows sent per statement. Another solution is to build a PL/SQL block to do the inserts. Oracle seems to parse large PL/SQL better than large SQL, but that solution is more complicated.
(Btw, it's probably just be a coincidence that it ran faster in SQL Developer. Since the problem is with the parse time, the second time you run it will always be faster.)