Exchange is a very intensive app. You should run it on a BDC to avoid processing logons and have no other services running. Where possible, WINS, DNS, DHCP, file and print and so on should be run on other servers.
I once managed to run everything on the one server with 128MB RAM, but people complained about log on times, email response and so on.
Bottom line is the recommendation to keep Exchange separate.