The requirement to use CG to effectively implement EJBs does indicate a design smell.
That's not the end of the story though. There are reasons why, for example, .NET coders are using CG. The .NET APIs are simpler, but they still want the platform independence that they get with CG. In addition they want the quality that CG brings to redundantly coded tiers, such as the database access tier of a web application.
I'm not a 'CG everywhere' advocate. I believe in pragmatic use in appropriate areas. A database access layer is one of those areas. No matter how great your language you are still going to be hand coding accessors for each table and field. All of which is redundant work which could be better done by a generator.