As a mechanical process controls engineer, I would recommend avoiding any scheme that works from first principals and rather use systems that work on directly-measured system outputs.
What do I mean? Well the best solution recommended is to let the user input the number of gallons per minute each zone uses, and have the system multiply that by the number of minutes to estimate how many gallons were used.
A second best solution would be to let the user enter the square footage and the watering rate (measured in inches per minute by putting cups in the yard) to let the system estimate gallons per minute. Because well-designed sprinkler systems try to get the same rates, a default inches/minute could be used (like in the current system). Here, you're taking some fairly direct output measures and making the simplest possible assumption (uniform sprinkling) to get the magic number.
Though it may feel more attractive and cooler, the likely worst (most inaccurate, most likely to be wrong) method would be to count heads and work from a flow per head. If you knew how much came out, that would work. However, and as noted, the amount of flow will vary depending upon watering pressure and a flow rate that is typically adjusted using some sort of screw on top of the head. It would be nearly impossible to calculate the flow and practically really hard to actually measure how much a given sprinkler head puts out on a per minute basis.
These general ideas of measuring the simplest thing are, in my opinion, the biggest problem with the Rachio system. There's too many settings based upon first principal variables. For example, think how nice it would be if you could just say "increase water by 25%" OR "my grass needs more water" instead of whatever you do currently to trick it into giving you more water. I would highly recommend to the Rachio folks to sort of walk through each use case to see which solution comes closest to getting to this ideal of working from directly observable system outputs.