I'm yet to figure out which is better to use since we're only experimenting with Docker for dev, but it seems like having a volume based container makes versioning and getting people up to speed easier (we can commit a base data container image for people to work with).
I use shared directories though as well for cross compile environments and for dev work to redeploy apps without rebuilding the container.