Turns out you can recreate a single (anonymous) volume, using the --renew-anon-volumes option on docker-compose up. The development iteration cycle improved noticeably, relatively to the sledgehammer approach I've been using thus far, recreating all volumes:

docker-compose down -v
docker-compose up -d

Incidentally, a candidate alias oneliner to remove the dangling volumes: docker volume rm $(docker volume ls -q -f 'dangling=true')