Como alguém que passou vários anos trabalhando com ambos, minha perspectiva é que os dois pacotes não são tão diferentes assim. É verdade que eles usam linguagens diferentes, mas de maneiras muito semelhantes (ambas são orientadas a objetos, o Trilinos faz pouco outro uso do C ++ além do uso de classes). Ambos suportam praticamente tudo o que você deseja fazer com álgebra linear (por meio de subpacotes ou coisas que eles baixam em tempo real, o que, da perspectiva do usuário, não faz diferença). Finalmente, ambos têm um bom número de subpacotes mais obscuros e provavelmente não muito usados (por exemplo, "peneira" da interface de malha do PETSc, diferenciação automática em Trilinos, etc.).
Para mim, o apelo de Trilinos é duplo: - O número de subpacotes obscuros em Trilinos é muito maior; se eu precisar de algo na direção X, vou encontrá-lo no Trilinos e funcionará com o resto do meu código. - Trilinos é muito mais conservador em sua estratégia de desenvolvimento. O PETSc renomeia as coisas o tempo todo e toda versão requer que os usuários alcancem funções renomeadas, bibliotecas diferentes etc.