Forgive me if this is a stupid or naive question...
I generally think of an ElementCriteriaModel as being a "search object". Specifically, it's a search object which revolves around a specific type of element. The model has attributes like order, offset and limit, which are obviously common terms when conducting an SQL query.
On the other hand, a DbCommand is an object which directly translates to an SQL query. This is far more flexible, allowing you to do things like perform complex joins.
So while I can certainly see some differences, it's hard for me to grasp the finer points of one vs. the other. (I'll admit that typing this has helped me to see it a little more clearly.)
What am I missing/misunderstanding?
joinwith another table? The abstraction is great, but it seems to come with a few limitations. – Lindsey D Sep 26 '14 at 18:04buildElementsQuery, which works perfectly in this case! I posted a separate SE question/answer to show how it works... – Lindsey D Sep 27 '14 at 20:59