The ScrollBar control, like many other controls which respond to pointer input, marks PointerReleased as Handled=true to prevent ancestor elements from also responding to that input. (For example, if you have a Button inside of a Button, you probably want clicking the embedded button to only fire the Click event on that button, not on both buttons. Marking the PointerReleased as Handled=true is key to controlling this behavior.)
Because of this, if you register for the PointerReleased event in the normal way on the ScrollBar or an ancestor, you won't receive the event -- the event has already been handled.
There is a solution to this, which is to use AddHandler() with handledEventsToo=true. This registers to receive the event even if someone has already marked the event as Handled=true. Here is an example of this call:
myTargetElement.AddHandler(UIElement.PointerReleasedEvent, new PointerEventHandler(ScrollBar_PointerReleased), true/handledEventsToo/);
Of course, when registering with handledEventsToo=true, you need to consider the comments above about why this is not the normal behavior. Usually this means you need to call AddHandler on an element which is sufficiently close to the element you are interested in to make sure your handler doesn't get events which you aren't interested in. You can also use the PointerRoutedEventArgs.OriginalSource to check which element originally received the event, though with that you'll likely need to walk up the parent chain to find which control (like the ScrollBar) the element is part of.