Can I change launchd program arguments based on calendar interval?

The "standard" thing to do is make a new .plist for each different time/argument combo. This is essentially the equivalent of making multiple entries in the crontab, except that each "entry" is an entire file, not just a line.

There's a good example of this in macOS's launch daemon entries for the periodic maintenance program. /System/Library/LaunchDaemons/com.apple.periodic-daily.plist runs /usr/libexec/periodic-wrapper with the argument "daily" and a 24-hour interval, ...periodic-weekly.plist runs it with the argument "weekly" and a 7-day interval, and ...periodic-monthly.plist runs it with the argument "monthly" and a 30.44-day interval.