It’s certainly an interesting problem, and not all that trivial.
My first approach would be to generate a bitmap of the top-view of the shape, sampling each pixel and seeing in which direction it flows until it hits the boundary. You draw the entire path it takes using a colour that identifies it as belonging to its end-point. Then repeat for every pixel in the bitmap, and an optimisation there is that as soon as you hit an already computed pixel you can just copy it.
This is inherently an inaccurate sampled approach, but given that the model isn’t a perfect representation of reality anyway that doesn’t really matter.
Afterwards you just count pixels of a specific colour to figure out the area of the basin associated with a specific end-point. This gives you an approximation of the 2D area, but then that sounds correct as you don’t get more rainfall on slanted surfaces, except if you take non-vertical rain into account.