Comment by brudgers
Algorithms can make many types of decisions, but an algorithm cannot make aesthetic decisions. The size of nodes and the size of the boundary are aesthetic decisions as is the ordering of the nodes and so on.
Or to put it another way, you do it by hand when you care and with a computer when you are meeting a specification.
For this particular example, I feel like a combination of both human input + algo could work. Something like:
* Have graphviz or some other solver output the [x;y] pairs for each vertex.
* Use the initial positions to create, with a physics engine, a construct where vertices are masses connected by springs following the DAG.
* Add a resizable bounding box constraint around the whole thing.
* Push and pull the boundaries and masses until you get something nice.
What you say still applies: you may want to give the user the ability to resize the masses and re-run the layout algorithm, etc.