If you are monitoring just one mailbox, then a Java agent has an obvious advantage because it does not need any configuration data. You just put the agent in the actual mailbox database and it calls AgentContext.getCurrentDatabase when it runs. If you are monitoring just a few maiboxes, you can just duplicate the agent, and again each instance just reads AgentContext.getCurrentDatabase. But if you have many mailboxes, then you probably don't want to duplicate it all over the place. You probably want just a single agent, or a stand-alone program -- and in both cases you will need some configuration data to control it. This is the case where I might consider running it stand-alone instead of as an agent.
But that would raise the question: How do you want to manage the configuration data? And another question comes from that: Who will manage the configuration data? If the answer is that the administrator of the Domino server will also manage the configuration of the process that is reading the mailbox data, then I would suggest that you should use a configuration tool that you know is familiar to all Domino administrators. That might be a group in the Domino Directory listing the names of the mailboxes, or it might be a Notes database containing a configuration document for each mailbox you are monitoring. And if you decide to go this way, then my preference would still be to use a Domino agent that reads the configuration information on the Domino server and reads the data from the configured mailboxes. But here the advantage isn't as strong. You could configure it in Domino but still run standalone. The stand-alone code would just need to be configured so that it knows where to look for its configuration data and that could just be a command line, like 'java myprog dominoServerName configDatabaseName'.