You may find the accumulation of abstraction layers is often the biggest problem (with maybe DB inefficiencies being a close second). But that's just a factor of complexity: The more "things" you have in a project, the more layers to accomodate these "things" and therefore the greater the complexity and higher the likelyhood of something breaking.
It's not unique to statically typed languages though. Often times when people try to mimic static typing and OOP (badly, a lot of the time) in dynamically typed languages, things are about the same or worse. E.G. PHP
In my humble experience, many abstraction layers in OOP-style projects are the result of the inexperienced developer (acting as an architect) trying to paint himself out of the corner he is most comfortable with, and make everything else look like something he can understand.
I think you're right. I've lost count of how many times I've seen people reimplement PDO from scratch just to mould the whole ensamble to something they find familiar instead of just extending it.
Also, like programminggeek says there's a lot of confusion as to where exactly the logic would go in a MVC project leaving developers to pick... wherever to put it. Of course that leads it to change from project to project and even from programmer to programmer in the same project sometimes.
I agree, but part of it is that the abstraction layers most people are used to just aren't very good. For example, the way people do MVC doesn't leave a good place for logic, so it gets bound to a controller or view or model. None of which is a very good place for logic. So, people add layers, and it gets gross.
We recently reworked an app developed in mid 2000's and had the delightful job of working through layer upon layer of abstraction and bad OOP (this was when OOP was becoming en-vogue), but a lot of these apps were written in PHP 4, so they mimicked 5.x with hacks... which then were used to implement abstraction.
Yeah, they turned a procedural language into some half-baked-kinda-sorta-looks-like-OOP project in just under 53,000 lines of code.
It's not unique to statically typed languages though. Often times when people try to mimic static typing and OOP (badly, a lot of the time) in dynamically typed languages, things are about the same or worse. E.G. PHP