"could you propose a test case with measurable results"
Time the following
a) plsql loop
for i in ( select * from my_table ) loop
null;
end loop;
so you are cycling through the data, still getting the row information but doing nothing with it.
b) sqlplus on the server
set feedback only
set arraysize 500
select * from my_table;
so you are cycling through the data, getting the row information, constructing rows on the client, but not rendering/spooling it.
c) sqlplus on a client
set feedback only
set arraysize 500
select * from my_table;
Same as (b) but you're pulling stuff across a network
d) sqlplus on server
(in a script)
set termout off
set arraysize 500
spool data.out
select * from my_table;
spool off
So now you're constructing rows and spooling them out.
So you can easily play with the various permutations.
The reason I'd expect a pro*c app to be better is that sqlplus is of course "all things to all people", ie, its much more than a "file unload" tool, so there's a lot more code path to travel. A pro*c custom written app can be tailored to do exactly what is required and no more.