Até o momento só atuei com um consultor uma vez, então acaba sendo mais meu ponto de vista sobre o assunto e sem muito embasamento. Como consultor eu fui apresentado a ideia de um MVP que a empresa/startup estava propondo e depois fiz mais uma duas reuniões com os desenvolvedores para ver como estava o andamento da arquitetura, como eles estavam prevendo algumas situações e como resolver elas também e que tecnologia usar.
No fim, era mais para ver se não tinha nem um erro grosseiro ou algum ponto muito enviesado, já que o time de desenvolvedores já estava fazendo esse trabalho de discovery a algumas semanas. Então minha tarefa como consultor foi dar um revisada, a mesma coisa que você deve fazer quando escreve um texto ou até mesmo seu código no dia a dia, muita vezes você acaba lendo o que você acha que esta lá, mas pode ser que na verdade tem um typo ou que faltou uma pontuação, detalhes geralmente kk.
Entretanto, me lembro de conversar com um engenheiro de petróleo que fazia um trabalho de consultoria para a Petrobras. No caso dele, seu foco era no dutos usados para o transporte de 'óleo' (não sei o nome técnico para este caso kk) e ele comentou que algumas vezes ele teve que colocar a mão na massa para resolver uma situação. No caso dele os acordos eram baseado na produção, logo se tivesse problema no transporte do material do ponto A para o ponto B ele não iria ganhar.
Acho que a principal diferença é como você encara o trabalho, o time e a empresa. O progamador faz parte do time, da empresa e 'tem' de entregar o trabalho, já o consultor não faz parte do time, não faz parte da empresa e opina, faz sugestões sobre o trabalho.