In a nutshell, think of it this way:
Your data access classes are responsible for creating connections, executing stored procs, returning result sets, etc. This isn't really business logic.....it's just data retrieval.
A business object needs to communicate with the data access layer in some way, obviously, but that should be the extent of it.
In a multi-development environment, you may have developers working on BO classes, and a different developer working on DA classes. The BO shouldn't need to "know" anything about the DA, other than what parameters to pass to it, and what it returns.
In the beginning, I mixed the two....and actually it was bonnie who convinced me of the value of keeping them separate.....it makes for a cleaner solution, IMO.
Also, consider this: if you make your data access classes independent of your business objects, you can use them in multiple projects.
Hope that helps...
Kevin