In what all cases would one use an external load balancer over the Ingress routing mesh in a Docker cluster?
You missed a point that there's still a need in balancing traffic before nodes in Docker cluster, and ELB is great for it (managed cluster, healthchecks, you don't pay for number of ELB instances per VPC, you can spawn spare nodes and register them in ELB automagically with Cloudwatch), great discussion on ServerFault. Basically, external balancer will split traffic between all nodes, while internal balancers will route it to nodes where service containers are running (which is where routing mesh is used).