A problem I can already see appearing from a contract design point of view, is that if you have complex operations in you contract, and by complex, I mean anything with time complexity higher than O(1), it becomes much harder to predict how many ethers it will take to run it.
Concatenating two strings of 10 characters will take more ethers than concatenating two strings of 5 characters. In practice, as a contract designer, you'll want to be able to provide an upper bound of how many ethers users to send with their transaction to be guaranteed that the contract will execute it. You might not be able to do that with anything else than trivial contracts.
I'd like to hear if the devs have a view on that.