To explain it better:
There really is no concept of a "purge interval". The purge thread is constantly running, purging mailboxes in memory, one at a time. Between every one-two mailboxes it sleeps for the interval specified by zimbraMailPurgeSleepInterval. I have much fewer mailboxes on my server so 1d or 1m is fine for me - set accordingly after you work out the math.

This is way more robust than the old method & allows for spreading the load out overtime, which is especially nice for larger setups.
Work on this was done via
Bug 13435 - User-definable expiration policy for systems folders where PurgeThread was implemented, which iterates all the mailboxes on the server and purges them one at a time. Mailboxes are only purged if they're loaded into the server cache & the thread sleeps between subsequent purges.
In short, the current mailbox purge algorithm only affects mailboxes that are in memory - as the theory is that if a mailbox is not in memory, it's not being accessed, not receiving mail, and therefore has less of a need to be purged.
Bug 20720 - Guarantee that mailboxes will be purged was filed for the issue of wanting a double check - possibly by making use of a zimbraMailLastPurgedTimestamp.
And yes zmpurgemessages, which used to produce some heavier load, was removed from cron/libexec in
Bug 20705 - Remove zmpurgemessages
Of course it's all dependent on the zimbraMailSpamLifetime/zimbraMailTrashLifetime (default 30d) for what mail is removed.