I can give you a couple of reasons why you should run an IGP inside an AS:
- Speed of convergence for the AS core
- Reduced hardware requirements of core routers within the AS
An important point to consider about BGP is that it is truly different from other routing protocols in that it doesn’t actually route packets. Instead, think of BGP as an application that tells you where packets need to go, but not HOW to get there. The “how” is up to a true IGP. Let’s consider this from the perspective of a very simple ISP. Let’s say this ISP has three peering points with other ISPs - A, B, and C. The routers for A, B, and C would sit on the edge of the ISP’s network at the actual connection points with other ISPs, and only these routers must run BGP. What BGP will do in this case is say, “if you want to get to network X, go to A. If you want to get to network Y, go to B. If you want to get to network Z, go to C.” Again, the key point here is that BGP tells you WHERE to go, not HOW to get there.
The job of HOW to get to A, B, or C, is up to the ISPs core routers, which are often separate from the routers for A, B, and C. These core routers don’t need to know, nor do they care, about the full Internet BGP topology. All the core cares about is routing between A, B, and C, and doing that as fast as possible. The core also needs to adapt to changes of connectivity between A, B, and C as fast as possible. Because of this, there is no reason to run BGP on them. BGP is resource intensive and very slow to converge as compared with typical ISP favorites like OSPF or IS-IS.
So the key answer to your question is understanding the separation of WHERE to go (BGP) vs HOW to get there (IGP).