Você está certo de que os computadores físicos têm memória finita e, portanto, não são completos para Turing. Existem outras maneiras pelas quais a teoria da computabilidade não é um bom modelo para a computação - ela não leva em consideração as restrições de tempo e memória. A teoria da complexidade foi inventada (talvez) como uma representação mais realista da computação, mas o IMHO sofre de problemas semelhantes (mas mais sutis).
Por outro lado, para estudar matematicamente os recursos e limites da computação, precisamos usar alguma abstração sem restrições. Isso torna a análise possível. Da mesma forma, na mecânica estatística, assumimos que o número de elementos (átomos ou moléculas) é tão grande que o comportamento está próximo do limite (ou seja, deixamos o número de elementos tender ao infinito). Estudar computação de uma perspectiva assintótica tem vantagens semelhantes, mas às vezes é enganoso. Aqui estão alguns exemplos deste último:
- Em criptografia, algoritmos exponenciais às vezes são viáveis. Se escolhermos os parâmetros de segurança incorretos, nossa criptografia pode ser insegura, mesmo que seja "comprovadamente segura".
- Os algoritmos de tempo polinomial devem representar uma computação eficiente e viável, mas muitos deles não são viáveis. Como exemplo, os algoritmos de multiplicação de matriz mais sofisticados não são usados na prática.
- A teoria moderna da complexidade é obcecada pelo pior desempenho possível e não pode analisar algoritmos heurísticos usados na prática. Problemas difíceis de NP são considerados inviáveis, mas estão sendo resolvidos na prática o tempo todo.
Uma questão separada é que computadores reais não funcionam como as máquinas de Turing. Eles funcionam como máquinas de RAM, que são uma abstração melhor para a computação real.