Suppose B and C are IBGP routers. On B we set the BGP neighbor next-hop-self.
The only advatage I see of this command is to avoid having a static route, on C, to the exterior EBGP link.
Are there any other benefits?
in a IP only network the only advantage can be that of being able to satisfy the BGP next hop reachability check (first check in the hierarchy of criteria used to choice the BGP best path)without adding a route as explained by Jon and Amit.
In a MPLS network there are some scenarios were implementing inter-AS MPLS VPN where the next-hop-self is required to be able to forward MPLS VPN packets at the AS boundary routers. In practice the BGP next-hop-self in that cases allow to "join" two MPLS label paths at the boundary.
Hope to help