First of all, I just want to add my voice in thanks to @GreenSock for the "custom" solution above! Fantastic!
I'd also like to add that I personally don't think that this particular use case is actually a "one-off" type that should be considered "built-to-order". From what I've seen, it's actually pops up fairly frequently around the web. Take for example the right sidebar of this Adidas product page (sorry the loading is slow, I linked to the Wayback Machine to try and ensure the link won't break). The sidebar might not have changing height drawers (though if you change the viewport size, it rearranging the shoe size buttons), but otherwise it's essentially exactly what this topic is describing. The page is still using this same implementation at of the time of writing this reply.
The sticky-sidebar and sticky-sidebar-v2 packages which attempt to achieve this exact use case get nearly 8,000 weekly downloads combined on NPM. So then, you may wonder, why not just use those? Well I'm using the first of them, and I've found that on some devices the sidebar can "flicker" when scrolling quickly past the end of the "pinned" area, and there are some other issues. The authors did a great job, but I believe the GSAP team has proved themselves the most trustworthy source across the entire web for stuff like this.
So, my feedback is that I actually see a huge benefit from officially supporting this, since a basic implementation already exists above.
Using ScrollTrigger to pin an element of arbitrary height (could be larger or smaller than the viewport itself)...
...retaining scrolling inside the element while scrolling inside the pinned area (if the element doesn't fit inside the viewport)...
...sticking to each end of the element when it is reached while scrolling inside the pinned area...
...with a way to have the ScrollTrigger(s) watch the height of the element for changes.
I understand the implementation above took some time to put together (again, thank you immensely). Yet the end result is not particularly "custom". I just created a GSAP account for the express purpose of sharing my two cents on this topic. The usages for such a feature are actually quite far and wide, as seen above, not isolated to the 1 or 2 requests of this form. An official "GSAP version" for this feature in the form of a plugin or something would be incredible, even if it was locked behind a paid tier.
Thank you so much for all the incredible work you guys do, especially where doing so requires so much research to clean up after browser rendering spaghetti code (looking at you, mobile Safari).