Monkey patching in Ruby is not mandatory, but in my opinion is more prevalent than it should be.
However, as it is so easy to open up a class and change it at run-time, lots of people started using it as a viable way to add add random methods to the core classes.
This is bad in my opinion and its proliferation provoked some degree of backlash: Monkeypatching is Destroying Ruby.
Nonetheless, opinion remained divided and Ruby 2.0 even shipped with refinements, an experimental feature that aims to change the way monkey patching is performed. Refinements allow developers to change built-in methods without affecting other code that uses them.
You might also find this interesting: http://blog.codinghorror.com/monkeypatching-for-humans/