Because ISPs choose the most cheapest paths for them. If routing traffic to the ISP (C) for ISP (A) is cheaper through ISP (D) (which is probably a big company with really big links, which sells the traffic in significant volumes and because of that have lower prices) than by ISP (B) (which can be a pretty small ISP with small resources, so they traffic price is higher) they will do it.
Basically that depends on agreements between companies, which are based on price.
Actually, you CAN route the traffic through ISP (B), but for that you need to set up a proxy/VPN server on ISP (B) and create the chain by yourself.