Is there any way to "hand over" a pointer event from one game object to another?

Let’s say you have two game objects Foo and Bar.

They both have scripts that implement the IPointerDownHandler and IPointerUpHandler interfaces.

User touches on the Foo object, drags over to the Bar object, and release over the Bar object.

Currently Foo’s script will get both the OnPointerDown and OnPointerUp events.

Is there any way to make it so Bar’s script gets the OnPointerUp event?

You can find all objects under your pointer by calling EventSystem.current.RaycastAll, so you can call that in in Foo’s OnPointerUp function.
Then you can filter for the type of the object you want to notify. Then call their OnPointerUp function or some other function.

The ExevuteEvents class may also help.