It is always better to have an observer (of course, if possible). This way you have a higher chance of everything working on future upgrades. It also lowers the chance of extension conflicts. This is the order you should keep in mind when trying to change something in Magento.
- Create Observer on event
- Rewrite core class
- Copy core class in
local
code pool Edit core file- yeah...never do that