Primeiro, um esclarecimento: o Java não é totalmente estático-compilado e vinculado da maneira que o C ++. É compilado no bytecode, que é então interpretado por uma JVM. A JVM pode fazer a compilação just-in-time na linguagem de máquina nativa, mas não precisa fazê-lo.
Mais ao ponto: acho que a interatividade é a principal diferença prática. Como tudo é interpretado, você pode pegar um pequeno trecho de código, analisar e executá-lo no estado atual do ambiente. Portanto, se você já executou o código que inicializou uma variável, teria acesso a essa variável etc. Ele realmente se presta a coisas como o estilo funcional.
A interpretação, no entanto, custa muito, especialmente quando você tem um sistema grande com muitas referências e contexto. Por definição, é um desperdício porque código idêntico pode ter que ser interpretado e otimizado duas vezes (embora a maioria dos tempos de execução tenha algum cache e otimizações para isso). Ainda assim, você paga um custo de tempo de execução e geralmente precisa de um ambiente de tempo de execução. Também é menos provável que você veja otimizações interprocedimentais complexas porque, atualmente, o desempenho delas não é suficientemente interativo.
Portanto, para sistemas grandes que não mudam muito, e para certos idiomas, faz mais sentido pré-compilar e pré-vincular tudo, faça todas as otimizações que você puder fazer. Isso acaba com um tempo de execução muito enxuto, já otimizado para a máquina de destino.
Quanto à geração de executáveis, isso tem pouco a ver com isso, IMHO. Geralmente, você pode criar um executável a partir de uma linguagem compilada. Mas você também pode criar um executável a partir de uma linguagem interpretada, exceto que o intérprete e o tempo de execução já estão incluídos no pacote executável e ocultos a você. Isso significa que você geralmente ainda paga os custos de tempo de execução (embora eu tenha certeza de que, para alguns idiomas, há maneiras de traduzir tudo para um executável em árvore).
Não concordo que todos os idiomas possam ser interativos. Certas linguagens, como C, estão tão ligadas à máquina e a toda a estrutura de links que não tenho certeza de que você possa criar uma versão interativa significativa e completa.