Can anyone answer why does BGP RR only reflect the best path?
To conserve memory at destination, it was not important to micro-optimize forwarding path in the past. This is quote from RFC4456:
One of the key component of the route reflection approach in
addressing the scaling issue is that the RR summarizes routing
information and only reflects its best path.
While scaling is always important, clearly there are today scenarios where we'll rather spend RIB memory than choose suboptimal path.
AddPath allows BGP to send more than single best path. Optimal reflection will use SPF (ISIS, OSPF) to reflect best route from POV of receiver, not from route reflectors own point of view.
Bear in mind that the idea with iBGP and route reflection has been to distribute path information with the idea that specific routing/forwarding decisions would be accommodated by the underlying IGP (particularly including multipathing, internal failover, etc). As such, a pointer to what ought to be fairly static next-hops can be kept in table while avoiding the churn associated with localized network information.
Scalability and stability were (and arguably should be) the primary objectives of BGP - even at the price of suboptimal path choice and fast convergence. The traditional implementation of the RR epitomizes this. Ideally the information on RR's should be as static as possible and timers should be kept on the long side.
BTW - There are circumstances in which an RR might send multiple paths to the same v4/v6 destination - both the AddPath feature mentioned above as well as in the MPLS VPN case where a given prefix is associated with the RD's of multiple PE's.
To add to the previous answers, you have a new feature called BGP path diverse to allow the RR to advertise a diverse path. For more detail, please check RFC6774 or Cisco implementation at http://www.cisco.com/en/US/docs/ios/ios_xe/iproute_bgp/configuration/guide/irg_diverse_path_xe.html