I agree with you that I don't like overloading conditions like this either, but in order to implement the DBO interface, its not like we can just add a new param.  

Joins specifically is safe to add here because if someone had a field named joins in any of their tables and didn't use dot notation to specific the field, then they would get unexpected results with other parts of the system as well, especially if using Containable Behavior.

What I'd prefer to do here is instead of having it just be 'joins',  have it be something like 'query', which could be an array with the additional update params.  Many of the params used in find are also supported for updates, and when used properly provide for some pretty amazing udpates as well as batch updates using limit.