I have built several large systems in dynamic languages including Smalltalk and Ruby. The most important part of building such a system is to clearly define what the system needs to do. In modern development methods that means BDD as in rspec, but it can also mean a clear statement of what the system should do.
Once you know what it should do the next thing is to allocate that what to classes (the who). That allocation needs to be explicit. This can be a class comment up to BDD specs.
The only place where dynamic languages differ from other systems is that you have the option of letting a class satisfy more than one expectation with minimal effort. To take advantage of this the expectations should be smaller and the classes combine them, rather than having the "interfaces" be monolithic and exclusionary. Try to break up the problem into very small units of behavior/data and then combine them to make actual classes. For example in a mail system the minimal aspects of a mail attachment might be to return a B64 encoding and a mime type. It would be tempting to place that logic in a message class, but placing it on the attachment would allow anything to meet that expectation. The more flexibiilty you introduce by using modular expectations and not assuming an object has a huge set of behaivors, the more adaptable the system will be over time.
Adding dynamic behavior to a class/object is fine if it is apparent to the reader that it is happening, and doing so does not violate a reader's intuition. For example if every object in a collection received special behavior by virtue of being in the collection and only the collection used that behavior it would be fine. But, if the behaivor became relied upon by other parts of the system that were not directly tied to the collection, then you are in for a world of hurt.
Dynamic systems key advantage is that the programmer can make the rules on when an object can be suitable for a purpose. The best way to use such systems is to make those rules visible and clear to any reader/weriter within the system.