Your colleague is (sort-of) correct.
DDL includes an implicit commit before and after the statement. So if you create a table part way through a script, you've issued a commit:
create table t1 (
c1 int
);
insert into t1 values ( 1 );
create table t2 (
c1 int
);
insert into t2 values ( 1 );
rollback;
select * from t1;
C1
1
select * from t2;
no rows selected
So others can view your changes. And you can't rollback to before creating it.
Although 18c does bring an exception to this rule. Private temporary tables. You can rollback to before you created one:
insert into t1 values ( 2 );
select * from t1;
C1
2
1
create private temporary table ora$ptt_t (
c1 int
);
insert into ora$ptt_t values ( 1 );
rollback;
select * from t1;
C1
1
Though the rollback also destroys your PTT:
select * from ora$ptt_t;
SQL Error: ORA-00942: table or view does not exist
You need to set the on commit clause to preserve definition to avoid this. But whatever you do, when your session ends the PTT is gone!