Measurements and observations
Precipitation is measured with units of length rather than volume. At first blush that seems odd: why would we measure a quantity of water in inches or millimeters rather than cups, gallons, or liters? The answer is that volume depends on surface area.
When weather observers in your region say that the average rainfall is "12 inches per year" what that means is that if you set out an open-top container of arbitrary size with walls perpendicular to the earth, and if we assume no wind during the rainfall events, then water will accumulate 12 inches deep in that container. In theory it doesn't matter whether the container is an inch or a mile across. Square or round. Man-made container or natural pond or ephemeral pool in the sandstone.
Weather observation standards call for a rain gauge to be placed out in the open, spaced away from any obstruction by at least two times the height of the obstruction.
Wind puts a bit of a wrench in the works, as do obstructions like buildings or trees. If the collection surface isn't horizontal that changes things too. Consider that when rain falls while wind is blowing, one face of a building will get fully wet even though there's a roof overhang (the windward side) while the opposite face of the building will remain entirely dry, as will some amount of ground beyond the building (the leeward side). A rain collection made on the leeward side of an obstruction will take in less than a collection on the windward side. A surface that is tilted to be more normal (perpendicular) to the rainfall vector will collect more rain, while a surface that is tilted to be more parallel to the rainfall vector may collect much less.
Applied to rooftop collection
The simplest way to estimate the storage volume needed is to find the projected surface area of the roof and multiply by the average annual precipitation. By "projected surface area" I mean the amount of ground covered by the roof -- the amount of floor coverings you'd need under the roof, rather than the amount of shingles you'd need to cover the roof.
This simple method overlooks some obvious sources of error. If there is a tree or other building nearby it'll block some rain from reaching the roof surface. If there are winds present while the rain falls, a stronger wind may result in less rain collection. If the roof is pitched rather than flat then losses to wind will increase with roof steepness. Orientation of the building's larger or smaller roof faces with reference to prevailing wind direction will also play a part.
Water not collected because the container is already full is a missed opportunity. Storage containers have cost, as does the time to do careful engineering accounting for wind, roof slopes, and so on. Only you can determine how much cost can be supported today by the possibility of catching or missing some water in the future.
Start with the simple calculation: build a container with cubic foot volume equal to 1000 sq ft * (1 ft of rain + X ft of snow water content).
If containers are costly then start a little smaller than this and add when experience shows that your roof requires it. On the other hand, if excess capacity now is cheap and later expansion of the storage is costly, then oversize it a bit.