Because it runs the code only when it’s necessary.
It’s like having a friend and asking him every second if he/she is fine. Instead of constantly asking (and bugging him/her and probably losing a friend), just tell him/her to notify you if something happens. That’s how real friendship works!
Also observer patterns are easy to expand. In terms of C#'s delegates…
You can add more than one method to a delegate.
You can make several different classes use the same delegate.
So yeah, observers are cool. Not the solution for everything, but very useful.