I haven't been able to quite nail down the reason this works, but it does. I was facing almost the exact same problem. However, my dates in SharePoint were set to "Date only", rather than "Date and time". For some reason, even if you have SharePoint columns set to "Date only", things don't work as expected.
If I want to get items with end dates greater-than-or-equal to today, and my expression is EndDate ge utcNow(), you would think that would work. Instead, you may find (as I did) that you have to say EndDate ge addDays(utcNow(),-1). Why would you need to subtract a day? IDK.
As an example, one of my end dates was tomorrow. If I try to filter with EndDate ge utcNow(), that item was missed. If I filter with EndDate ge addDays(utcNow(),-1), it is included.
I could maybe understand if there was some hidden time information in the EndDate, and when the data was created in SharePoint, the current time is being held behind-the-scenes (even with a Date only column), but I confirmed the raw data being passed to Power Automate is date only. Weird.
Note that it also doesn't work without subtracting a day even if you use formatDateTime(utcNow(),'yyyy-MM-dd') or utcNow('yyyy-MM-dd').