Thanks for the logs. I was finally able to reproduce a similar situation:
Upload an event with UID:a%40b (note the %, for instance coming from some erroneously double-encoded old UID; nevertheless valid) to Google /events/a%40b.ics (or anything else)
Google usually rewrites the path (= moves the event) to <UID>.ics, which would be a%40b.ics.
However, Google CalDAV REPORT calendar-query reports /events/a%2540b.ics as the URL of the resource.
If you want to download /events/a%2540b.ics from Google, it returns 404, although it had just listed this path.
So, in my opinion and what I currently know about it, this seems to be a server problem. It should go away if you delete all events on the server and then only create/sync “clean” events with “good UIDs”. Maybe you can also create a new calendar for testing and see whether this one works?