Um ponto que não vi até agora é que existem plug-ins para IDEs que impõem conjuntos de regras CheckStyle em seu código, enquanto plug-ins PMD relatam apenas violações. Por exemplo, em um projeto de vários sites em várias equipes de programação, é importante aplicar os padrões ativamente, em vez de apenas reportar sobre eles.
Ambas as ferramentas têm plug-ins disponíveis para IntelliJ, NetBeans e Eclipse (em minha opinião, isso cobre a maioria dos usos). Não estou tão familiarizado com o NetBeans, então só posso comentar sobre IntelliJ e Eclipse.
De qualquer forma, os plug-ins PMD para IntelliJ e Eclipse irão gerar relatórios sob demanda sobre violações de PMD dentro da base de código do projeto.
Os plug-ins CheckStyle, por outro lado, destacarão as violações instantaneamente e podem (pelo menos para IntelliJ, tenho menos experiência com Eclipse) ser configurados para converter automaticamente alguns problemas (por exemplo, para 'OneStatementPerLine', colocará CR-LF entre as instruções, para 'NeedBraces', adicionará colchetes onde estão faltando, etc.). Obviamente, apenas as violações mais simples podem ser corrigidas automaticamente, mas ainda é uma ajuda em projetos legados ou em projetos localizados em vários locais.
'On demand' para PMD significa que o desenvolvedor deve decidir conscientemente executar o relatório. Considerando que as violações do Checkstyle são automaticamente relatadas a eles conforme se desenvolvem. Enquanto o PMD faz contêm um conjunto de regras mais extensa, em minha mente a enforecement automática / relatórios de violações em IDEs vale o incômodo de manter 2 conjuntos de regras.
Portanto, para qualquer projeto em que trabalho, usamos ambas as ferramentas, Checkstyle aplicado no IDE, PMD relatado no IDE e ambos relatados e medidos em compilações (por meio do Jenkins).