It's partly why Bitcoin is 5x Ethereum's market cap, despite technically being less capable. It's less capable of losing money, of DAO attacks, or other serious failures too.
SPARK[0] isn't Turing complete but it's still pretty useful, and likely a better language than Solidity.
[0] https://en.wikipedia.org/wiki/SPARK_(programming_language)
[1] https://papers.ssrn.com/sol3/papers.cfm?abstract_id=3160279
[2] https://coingeek.com/bitcoin-script-is-turing-complete-scryp...
These redefinitions say that you can take a few computation steps per Bitcoin block and save their state such that a later block can take a few more steps, so over time, very slowly, spread out over many blocks, Bitcoin can also implement an arbitrary computation. This is theoretically cute but otherwise useless.
Ethereum has a Turing complete language that is only limited in practice by external constraints like the gas limit. Bitcoin doesn't have such a language.
This can even be proved from first principles: bitcoin, and blockchains generally exist to validate the execution of contracts which have already occurred in meat-space. Basically you and I agree to conditions under which some money is transferred from me to you and vice-versa, which is the actual contract, then write a program (the "smart" contract) which validates that those rules were faithfully executed. It can be shown though that any Turing-complete contract rules can be validated using a non-Turing-complete language like Bitcoin script (ignoring runtime limits). The block chain doesn't need to run every contract, it just needs to validate that every contract ran correctly. A different problem, for which Turing completeness is not required.
Edit: For the down-voters, show me a Turing-complete contract that can't have its execution trace validated in a non-Turing complete language. In the 10 years I've been in this space I've yet to encounter a single one.