@Jonathan is on the right track, but the difference isn't about active or passive. "sich erweisen" is a reflexive verb, meaning the direct object and the subject are necessarily the same. So, the correct translation probably wouldn't be just "prove", but rather "prove itself": "The decision proved (itself) to be for the best", or "the decision turned out to be for the best".
"Beweisen" on the other hand probably always acts on something other than the subject (maybe unless if we're talking artificial intelligence ;) ).
As a side note, there's also the non-reflexive verb "erweisen", that has a different meaning: "Ich erweise ihm einen Gefallen", "I do him a favor". "Ich erweise ihm eine Ehre", "I bestow an honor upon him", and so forth.