Last week, we had the author of TDD for a Shopping Website LiveProject. Friday at 11am Ranch time, Steven Solomon will be hosting a live TDD session just for us. See for the agenda and registration link
For CMP beans the EJB Container is actually responsible for implementing the persistance logic. Therefore, it is the Containers responsibility to create and return an instance of the Primary Key class for your bean. The developer merely returns null because the Container is going to ignore it anyways.
Another point is that the client code calling the EJB does not directly call the bean code that you develop. It actually calls, from the create() method, a class that the EJB container implements, subclassed from the your EJB. In this class the ejbCreate really does return a primary key. So you return null from ejbCreate because you don't need to worry about what kind of primary key gets returned.