Jag stötte på exakt samma problem och förlorade nästan två dagar på att försöka lista ut det. Det verkar vara en bugg i EntityFramework-mappningarna för MySql.
Lösningen är att flytta DateTime.UtcNow beräkning utanför scoped lambda och koppla in det faktiska värdet.
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);