Лучше всего предположить, что настройки времени на сервере базы данных отличаются от настроек на компьютере разработчика (или компьютере, на котором работает .NET).
Разница между двумя фрагментами заключается в том, что во втором фрагменте условие p.date <= DateTime.Now
выполняется локально, а не на сервере базы данных.
Если вы хотите использовать местное время, вы можете сделать это:
var now = DateTime.Now;
var newNews = datacontext.News
.Where(p => p.status == true)
.Where(p => p.date <= now)
.ToList();