I have always used eBGP (with private AS numbers) to route between branches and headquarter sites. However, after reading the Cisco CCNP ROUTE Foundation Learning Guide, it states that best practice is to run an IGP between WAN sites.
Using OSPF as an example, I would imagine area 0 would be the headquarters location and each branch office would have its own area.
In my opinion, this is not optimal due to the nature of the business unit. For example, Site A and Site B are both single-homed to HQ via an MPLS connection. Everything is fine. However, a new BW-heavy application is being deployed at both of these sites. The business unit decides to create a private connection between site A and site B. Since they are both in non-zero OSPF areas, no type 3 LSAs will be advertised. Thus you will have to make a virtual link which introduces new design considerations and makes the design less scalable.
With eBGP, you would simply create another eBGP peering relationship and easily manipulate route preference over that link.
What do you experienced engineers out there think about this? IGP to branch offices or EGP? Also, would the connection type matter to you? For example MPLS vs VPN over Internet?