Ponieważ parametry określone w klauzulach zwracających są obsługiwane w inny sposób niż normalne parametry wyjściowe (getReturnResultSet vs getResultSet vs parametry zwracane w callablestatement).
Muszą być obsługiwane przez OraclePreparedStatement. W drugim przypadku, gdy zawijasz instrukcję insert w begin..end, wstawianie jest obsługiwane przez samą bazę danych, a jdbc widzi jako anonimowy blok plsql.
http://docs.oracle.com/cd/E11882_01 /java.112/e16548/oraint.htm#BABJJDDA