Meu instinto sugere que o memcached seria visivelmente mais eficiente, já que o sistema de arquivos manterá os sinalizadores de propriedade e permissão para cada objeto em cada criação e os verificará em todos os arquivos abertos para leitura. Além disso, é provável que você encontre as estruturas do memcached melhor indexadas do que o sistema de arquivos tmpfs que o IIRC usa uma lista linear não ordenada para listagens de diretórios, então tem que varrer (em média) metade de uma lista de diretórios para encontrar um objeto em vez de fazer um busca de divisão e conquista mais eficiente.
Suponho no que precede que você está querendo armazenar muitos resultados em cache, a maioria dos quais são relativamente pequenos em tamanho, cada um em seu próprio arquivo no sistema de arquivos baseado em RAM. Se você está querendo manter muitos resultados em um único arquivo no tmpfs, então um banco de dados sqlite baseado em memória seria mais eficiente e economiza a reinvenção da roda em termos de gerenciamento de índice e busca eficiente.
É claro que, como você diz, ser capaz de manipular seu cache com qualquer ferramenta que entenda sistemas de arquivos pode ser uma vantagem strong o suficiente para tornar a maioria dos pontos discutíveis de argumentos de eficiência.
Qual técnica é melhor vai depender muito do que você está usando, é claro, então pode ser uma boa idéia adicionar mais detalhes sobre o seu projeto à pergunta. Como uma consulta de otimização de código / dados, isso pode ser uma pergunta para StackOverflow em vez de ServerFault (um administrador de servidor provavelmente não estará em posição de escolher a opção de armazenamento em cache de um projeto, a menos que os programadores tenham implementado mais de um para escolher) - você pode encontrar pessoas que compararam o memcached / sqlite / tmpfs / custom_solution em seu projeto e podem fornecer alguns números comparativos úteis.