Com o sudo, você pode definir políticas por usuário e por programa sobre o tempo para reter ou redefinir o ambiente de chamadas no contexto do sudo. A política env_reset é definida por padrão.
Você não pode executar aplicativos gráficos via pkexec sem configurá-lo explicitamente para isso. Como isso é apenas um resultado da redefinição do ambiente, isso também é obviamente verdadeiro para o sudo. Observe, no entanto, que nem o pkexec nem o sudo podem impedir que um aplicativo malévolo seja executado como root para recuperar todas as informações necessárias dos gerenciadores de exibição ou do arquivo de cookie X11 dos usuários. O último, ambos ou similar, pode até ser feito por aplicativos não raiz, dependendo das circunstâncias.
Sudo não requer listagens explícitas de usuários. É possível listar qualquer grupo de usuários ou mesmo definir uma permissão para todos os usuários em geral. A diretiva target_pw permite que esses usuários se autentiquem com as credenciais do usuário em cujo contexto desejam executar um aplicativo, ou seja, raiz. Além disso, o igualmente tradicional programa su (su / gtksu / kdesu) pode ser usado para fazer o mesmo sem configuração especial.
O sudo também permite que o usuário permaneça autenticado por um tempo especificado. A opção é denominada timeout, configurável globalmente, por usuário ou por aplicativo. A autenticação pode ser mantida por tty ou globalmente por usuário.
Enquanto o pkexec pode não validar os ARGUMENTOS transmitidos ao PROGRAMA, o sudo realmente possui esse recurso. Admitido, porém, você pode facilmente mexer com isso, e isso normalmente não é feito.
Você pode ajustar um pouco a forma como deseja que os programas sejam executados via pkexec: icon, texto a ser exibido, você pode até ter informações sobre localização e tudo mais. Dependendo das circunstâncias, isso pode ser realmente bacana. Triste, porém, que alguém sentisse a necessidade de reinventar a roda para esse recurso. Provavelmente isso seria algo para colocar nos wrappers gráficos do gtksudo / kdesu.
O Policykit é apenas uma estrutura de configuração centralizada. Infelizmente não é bonito. Os arquivos XML de PKs são muito mais complicados do que qualquer coisa que um aplicativo possa fornecer nativamente sem arquivos binários. E ninguém seria tão maluco em usar binário ... oh gconf ... deixa pra lá.