Q:

Diferença entre private static final e private final para o uso da imutabilidade

Um atributo quando declarado com o modificador static tem a característica de "propagar o seu valor" por todas as instâncias da classe a que pertence, ou seja o seu valor será o mesmo para todas as instâncias. Devido a essa característica estes atributos recebem o nome de variáveis de classe. Estes possuem o seu valor armazenado em um endereço fixo de memória. Eis um exemplo:
class Foo {
    public static int count = 0 ;
    Foo() { 
        ++count;
    }
}

Um outro uso para o modificador static é quando queremos tornar um atributo imutável, inalterável, conseguido a partir da adição do modificador final, como no exemplo a seguir:
class Carro {
    private static final int RODAS = 4;
    ...
}

O mesmo resultado temos quando declaramos o atributo sem o modificador static, somente com o modificador final.
class Carro {
    private final int RODAS = 4;
    ...
}

Em ambas as instruções conseguimos o mesmo objetivo, o de tornar o valor de um atributo imutável. Diante disso, qual a vantagem real em usar o modificador static na criação de variáveis imutáveis? Existe algum ganho real relacionado a desempenho?

A:

Há algumas premissas falsas na sua pergunta:

"Em ambas as instruções [static e final] conseguimos o mesmo objetivo, o de tornar o valor de um atributo imutável."

O objetivo de static não é implementar imutabilidade mas sim o de declarar o membro (método, "campo", "propriedade", "atributo"...) em uma classe em vez de publicar em um objeto (uma instância da classe). 
Você pode ter confundido static com imutável ao tomar conhecimento de que uma vez atribuído um valor a um membro estático, a referência permanecerá ao longo de todo o ciclo de vida do aplicativo - o objeto referenciado nunca será recolhido pelo garbage collector enquanto o aplicativo estiver rodando.
Mas este membro estático não é imutável, uma vez que a qualquer momento você pode atribuir outro valor a ele (mudar sua referência para a de outro objeto) ou mesmo mudar o estado do objeto que ele referencia.
A palavra chave final sim, esta ajuda a implementar objetos imutáveis já que só se pode atribuir valor ao membro "final" uma única vez, e já que o compilador exige que este valor seja atribuído já no construtor da classe (caso não tenha sido atribuído já na própria declaração do membro estático).
Então, respondendo diretamente as perguntas:

"Qual a vantagem real em usar o modificador static na criação de variáveis imutáveis?" - Resposta: nenhuma.
"Existe algum ganho real relacionado a desempenho?" - Reposta: não.
"Diferença entre private static final e private final para o uso da imutabilidade." - Resposta: nenhuma diferença no que tange à imutabilidade da variável.

