It’s the second way you described: the manual rain delay simply skips programs that are scheduled to run during the delay period. The issue with pushing everything till the rain delay ends is that it significantly complicates the algorithm: first, the controller will need a way to ‘cache’ the program data during the rain delay period; second, if the rain delay is very long (like several days), it will need to ‘cache’ a lot of data, and it keep pushing programs that are supposed to run normally. This is not easy to implement, and probably causes more confusion.
If the rain delay missed an infrequent program, you can use the mobile app to do an ad-hoc run of the program. Also, note that firmware 2.0.6 now supports logging, so it’s easier to find out what programs / stations have run during the past several days.