Is DEFAULT NULL and 'nullable value without default' completely the same?
Not providing any default value or explicitly providing NULL is exactly the same thing for base data types. 

Adding a column with a NULL default value, does not require rewriting the entire table. It is essentially only a metadata update for the table. 

Quote from the 9.6 manual


  If there is no DEFAULT clause, this is merely a metadata change and does not require any immediate update of the table's data; the added NULL values are supplied on readout, instead






Note that this has changed with Postgres 11. 

When you add a column with a static default (e.g. default 42) the table won't be re-written either. Only if you provide a "volatile" default (e.g. current_timestamp) the table will be re-written.