Documentation describes how it works. If you use Postgres or Oracle, the system can lock tables in a way that ensures only one server will run the evolutions.
If you use any other database you MUST disable evolutions in production, or you will have a lot of issues.
Heroku uses PostgreSQL by default (if you enable their DB) which means that is safe to deploy your app in multiple nodes at the same time with evolutions enabled, Play will take care of that.
If your application is running on several hosts, you must set the config property evolutions.use.locks=true. If this property is set, database locks are used to ensure that only one host applies any Evolutions.