Срещнах точно същия проблем и загубих почти два дни, опитвайки се да го разбера. Изглежда, че е грешка в съпоставянията на EntityFramework за MySql.
Решението е да преместите DateTime.UtcNow изчисление извън обхвата на ламбда и включете действителната стойност.
var utcNow = DateTime.UtcNow;
query = query.Where(p => p.Published);
query = query.Where(p => !p.StartDate.HasValue || p.StartDate <= utcNow);
query = query.Where(p => !p.EndDate.HasValue || p.EndDate >= utcNow);