結論
標題で全てな気がするのですが、以下の例のとおりです。自前で nil を代入した場合には、そのカラムは DEFAULT の値が自動で入ってくれません*1。
例として、User というモデルを使います。ここで、height というカラムに NOT NULL 制約がついていて、DEFAULT が -1 であるとします。
レコード新規作成時
> User.new => #<User:0x00007f9709765500 id: nil, height: -1, (以下省略)
自分で値を代入する
> attrs_for_new_user_record = { height: nil }
> User.new(attrs_for_new_user_record )
=> #<User:0x00007f9709765500
id: nil,
height: nil,
(以下省略)
*1:上書きされる。当然といえば当然