Both are required for a robust solution. Both are useful. Neither [entirely] replaces the other.
CAML queries are required to efficiently query most SP datasources efficiently, such as Lists. On the other hand non-query CAML can be used to declarative configure many SharePoint artifacts.
The direct OM (SharePoint Object Model) is very useful for programatically iterating/updating many things; including the results from various CAML queries! The PowerShell cmd-lets also expose the OM for easy "inspection" of the current state of the Farm, etc. Scripts can also take advantage of this when needing to create many things - e.g. webs - from a common "template" with slight variations.
In addition, there are many operations via the OM which is not possible with CAML. For instance, Timer Job Definitions cannot be configured with just CAML.
However, writing a Feature Receiver to modify SP artifacts can be problematic, especially if changes must be done later: the revisions must then also be managed from the receiver - ick! For supported SP artificacts, always use CAML unless there is a reason not to. Do not complicate things without very good reason.
Don't fight SharePoint. Each task is different. Use the correct (and hopefully "approved") approach to make life easier.