Isn’t IS-IS a better fit for building L3-only networks than BGP, particularly considering that IS-IS already has a protocol to communicate with the end systems (ES-IS)?
In theory, he’s correct (see also this blog post).
In practice, ES-IS part never moved from CLNS to IP support because nobody felt the need to implement any host-to-router communication (apart from ARP and ICMP) in the IPv4 world. IPv6 sort-of reinvented ES-IS with Duplicate Address Detection and Neighbor Discovery, but never enforced the need for an end system to continuously announce itself.
Neighbor Discovery implementation on a router (ARP or IPv6 ND) could continuously probe the end hosts to verify they’re still reachable. Cisco is doing that whenever you’re using CEF switching, and Cumulus Networks uses the same approach with their Redistribute ARP functionality, as do several EVPN implementations.
In the IPv4 world that’s purely an implementation decision. IPv6 includes Neighbor Unreachability Detection but only for “the neighbors to which a node is sending packets” (section 7.3 of RFC 4861). Doing that for idle nodes is yet again implementation-dependent (NUD is traffic-driven, while we're looking for a topology-driven mechanism). In any case, we're misusing L2 address resolution protocol as a host reachability protocol, and the burden to figure out what’s going on is on the router, not on the end-host as it should be in a scalable network architecture.
Summary: The only way to get somewhat reliable IP address mobility (or service advertisement) in an IP environment is to use a routing protocol. Some people prefer RIP, others use BGP… just make sure you’re not using OSPF ;)