You can make a column non-null explicitly with a not null constraint. Or it can inherit this property by being part of a primary key. I suspect you don't have an explicit not null constraint on the source:
SQL> create table t (
2 x int not null primary key
3 );
Table created.
SQL>
SQL> create table t1 as
2 select * from t where 1=0;
Table created.
SQL>
SQL> desc t
Name Null? Type
----------------- -------- ------------
X NOT NULL NUMBER(38)
SQL> desc t1
Name Null? Type
----------------- -------- ------------
X NOT NULL NUMBER(38)
SQL>
SQL> drop table t purge;
Table dropped.
SQL> drop table t1 purge;
Table dropped.
SQL> create table t (
2 x int primary key
3 );
Table created.
SQL>
SQL> create table t1 as
2 select * from t where 1=0;
Table created.
SQL>
SQL> desc t
Name Null? Type
----------------- -------- ------------
X NOT NULL NUMBER(38)
SQL> desc t1
Name Null? Type
----------------- -------- ------------
X NUMBER(38)
So what's the difference? If you drop a primary key, the column is only not null if you had an explicit not null constraint on it too:
SQL> alter table t drop primary key;
Table altered.
SQL> desc t
Name Null? Type
----------------- -------- ------------
X NUMBER(38)
SQL>
SQL> drop table t purge;
Table dropped.
SQL> create table t (
2 x int not null primary key
3 );
Table created.
SQL> alter table t drop primary key;
Table altered.
SQL> desc t
Name Null? Type
----------------- -------- ------------
X NOT NULL NUMBER(38)
Chris