But as the article says, likely it happened via a script. But its a very costly mistake. I hope we know the real cause of it.
Overall, I like the depth the article has gone into. But I don't agree with this sentence:
the kind of script that swaps arguments by mistake may be the kind of script that does not write its keys out to a database, so the private keys may be long gone
I think the article got it wrong. How can the private key be lost (and also logged to DB!)? The 291+ btc would have come from some public key. If that that public key has got more btc attached to it, then the owner surely still has the private key. Also even if its zero value now. The wallet (public-key) from which the money came, would still exist, and private key still there somewhere.
So the miner can return the extra BTC to the same public key. Am I missing something?