Really once the user has read the message and they understand it to the point that they wish to close it, there's no value in the message to the user anymore. Closing it just lets them unclutter the page.
In many apps like Twitter or Gmail a user might be on the same "page" for a very long time, so being unable to clear status messages would be extremely annoying; they'd take up more and more screenspace, or at least waste some space even if there's only one. A huge red error message bar at the top of your Twitter stream long after the error occurred doesn't really help anyone.
Messages occur so that a user can take action or understand that something has happened. Once the user has had the opportunity to react to that, on their own time, the message may no longer be helpful.
Note that manually dismissing is an alternative to temporarily showing the message such that it disappears after a time. This means users might not get to read it at all! The third option is to make the notification never disappear, but as I mentioned above that's not always useful either.
Letting the user manually dismiss error/status messages allows them to stay informed of their situation while in control of the interface.