Natknąłem się na dokładnie ten sam problem i straciłem prawie dwa dni, próbując go rozwiązać. Wygląda na to, że jest to błąd w mapowaniach EntityFramework dla MySql.
Rozwiązaniem jest przeniesienie DateTime.UtcNow obliczenia poza zakresem lambda i wstaw rzeczywistą wartość.
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);