In my experience, hosting the database on the same server is unusual. The network hop to the database is usually a necessary evil, which produces more benefits than distributed objects do. (Note that in a distributed object architecture the issue is an additional
network hop in the Java layer, as the database will still normally be on another machine.) Often it's desirable to run a cluster of J2EE servers against the same database; often database admin can be an issue when there are J2EE servers on the same box. Also, you may want to use a different database in a staging environment.
Yes, connection pooling can reduce the cost associated with DB access. But it's one reason that you often want to cache data in the Java layer.
If you're dealing with a small scale app that will never be clustered, of course it might make sense to co-locate the database.