Why? Because you can't just make up syntax the way you'd want it to be - it is here so that you'd follow it.
If you want to name the NOT NULL constraint, then do it as follows:
SQL> create table table_name (age number);
Table created.
SQL> alter table table_name modify age constraint uc_person not null;
Table altered.
SQL>
It gets simpler if you don't care about constraint name:
SQL> drop table table_name;
Table dropped.
SQL> create table table_name (age number);
Table created.
SQL> alter table table_name modify age not null;
Table altered.
SQL>