Immutability doesn't actually solve much in the way of real-world problems. Most contract lawsuits don't concern accusations of secretly forging altered contracts, or any disparity between copies: they concern interpretations. And if you've ever read a typical boilerplate contract for most any serious transaction, you'll see they cover "if-then" situations about as much as can be reasonably be done.
Explain the mechanism by which a smart contract in this instance would both have made it impossible for Facebook to make this move and, if they did anyway, avoided the necessity of Palmer to sue them over it.
This is known as the “oracle problem”; actually getting the correct real world inputs into an immutable smart contract is a serious hurdle to adoption.
If you pay attention to most smart contract pitches, they polite side step this issue.
Blockchain contracts definitely do not somehow preclude "evil", for almost any reasonable definition of evil. They preclude forgery and very specific categories of fraud — but beyond that the sky is the limit.
The problem with block chain is it requires the whole stack be on chain (at least if it is to be referenced in a contract). If that's the case, then you can definitely do this. E.g. a smart contract that represents the login functionality and you can hard-code it has to be some other immutable contract, and can't be changed to FB login.
On second thought, the whole issue is weird because blockchain doesn't have a login concept.
It's auditable, open source, and immutable. It's neutral. Neither good nor evil. It's your responsibility or the community's responsibility to audit the code and assess the risks.
That's great at and all, but I honestly don't understand how that would help in this situation. Unless you write something absurd like "Mark Zuckerberg's stock will be transferred to Palmer Luckey if this promise is broken", which just about no one in Mark's position would agree to, how are you going to actually prevent something like this from happening?
edit: and as ComputerGuru stated - such a clause can just as easily be put into a traditional contract