Starbound's water system is actually 2D tile based cellular automata. Each tile on the screen that does not contain a front tile layer, is capable of holding water. The amount of water is calculated via cellular automata.
More information on this technique here:
http://www.gamasutra.com/view/feature/134736/an_intro_to_cellular_automation.php
http://www.jgallant.com/2d-liquid-simulator-with-cellular-automaton-in-unity/
As for the rain drops, those are particles. They serve mainly to fake that there is actually water falling from the sky. The water accumulates only because the game knows it is currently raining. The individual drops have nothing to do with the actual formation of the water pools.
The way they get it to accumulate, is by determining where there are holes in the top layer of the ground. If there is an area that can accumulate water, the cells in that area increment their water levels accordingly.
Starbound also deals with water pressure, and their rendering technique is pretty amazing. They have the best 2D implementation of water simulations physics using cellular automata that I have ever seen.
Here is a primitive view of a liquid physics engine, utilizing the above mentioned cellular automata technique. The rendering portion becomes a little more complex, as your water is represented by a numerical value.
http://www.jgallant.com/images/pressuretest.gif
In this example, a very simple improvement would be to hide water cells that have less than 1 full unit of water in it's tile if there is no solid tile below it. But then, you are hiding the water flow. Instead of hiding it, you would have to determine how the water is flowing, and then draw the appropriate water sprite in its place.