A principal diferença é que o InnoDB suporta transações enquanto o MyISAM não.
Existem inúmeras outras diferenças, no entanto, as comuns que eu conheço são:
- O MyISAM normalmente é considerado mais rápido na pesquisa, mas as melhorias recentes do InnoDB estão removendo essa diferença e melhorando o desempenho da carga de trabalho de alta simultaneidade
- InnoDB suporta transações enquanto o MyISAM não
- InnoDB suporta integridade referencial enquanto o MyISAM não
- O InnoDB lida com índices de maneira um pouco diferente, armazenando a chave primária como parte de cada índice (fazendo com que os índices ocupem mais espaço no disco, mas também tornando um índice de cobertura mais provável)
- MyISAM faz bloqueio em nível de tabela enquanto o InnoDB pode fazer bloqueio em nível de linha
- Diferentes configurações de memória/buffer/índice são usadas nos arquivos de configuração do MySQL
- InnoDB normalmente tem uma melhor recuperação de falhas
- Conforme mencionado em outra resposta, os dados são armazenados no disco de maneira diferente. Eu acredito que o InnoDB é configurável nesta área e pode ter um arquivo por tabela etc. se necessário
Tenho certeza de que uma pesquisa no Google ou no site MySQL trará inúmeras outras diferenças com mais detalhes.