O valor SQL NULL para Data é
1900-01-01 00:00:00.000
, você não poderá inserir uma data em 0000-00-00 00:00:00.000
Eu experimentei ultimamente, minha solução para isso é armazenar o valor NULL e substituí-lo ao exibir em DataGridView ou Etc ...
Amostra:
if DataGridView1.Rows(e.Index).Cells(10).Value.ToString = "1900-01-01 00:00:00.000" Then
DataGridView1.Rows(e.Index).Cells(10).Value = ""
End If