C'est une bonne question, je ne suis pas un pro du dev Java d'entreprise, mais je dirais que quand on utilise un framework ORM les procédure stockées ont surtout un intérêt lorsqu'elles permettent de profiter de mécanismes spécifiques au DBMS qui sont particulièrement efficaces.
Certains traitements de données sont aussi bien plus rapides à faire en base qu'à l'extérieur, par exemple parce qu'ils exploitent à fond les index (par ex. les traitement spatiaux avec postGIS ou Oracle Spatial).
Par rapport aux triggers, c'est toujours une bonne idée d'avoir les contraintes d'intégrités de ta base de données directement implémentés dans celle-ci. Tu as ainsi une garantie de conserver la cohérence de ta DB même si l'outil qui l'exploite change.
C'est aussi une protection contre les régressions...
Mais sans doute qu'un vrai pro saura t'en dire plus, et mieux.