My config differed, in that I didnt use the vrf export map command... (my solution produced the same results, so I would hope its ok?)
R4:
ip vrf VPN_A
rd 100:1
route-target both 100:1
route-target import 100:6
!
ip vrf VPN_B
rd 100:2
route-target export both:2
route-target import 100:5
R5:
ip vrf VPN_A
rd 100:1
route-target both 100:1
route-target export 100:5
route-target import 100:6
!
ip vrf VPN_B
rd 100:2
route-target export 100:2
route-target import 100:2
!
route-map FILTER permit 10
match ip address prefix-list FILTER
set extcommunity rt 100:5
!
route-map FILTER permit 20
set extcommunity rt 100:1
!
ip prefix-list FILTER seq 5 permit 172.16.5.0/24
!
router bgp 200
address-family vpnv4
neighbor 150.1.4.4 route-map FILTER out
R6:
ip vrf VPN_A
rd 100:1
route-target both 100:1
!
ip vrf VPN_B
rd 100:2
route-target both 100:2
route-target export 100:6
route-target import 100:5
route-map FILTER permit 10
match ip address prefix-list FILTER
set extcommunity rt 100:6
!
route-map FILTER permit 20
set extcommunity rt 100:2
!
ip prefix-list FILTER seq 5 permit 192.168.6.0/24
!
router bgp 100
address-family vpnv4
neighbor 150.1.4.4 route-map FILTER out
Apart from using a route-map filter on the bgp peering (instead of the export map) the logic appears to be the same as the SG. If anything I believe I at least now have 2 options of producing the same result. Which is, I suppose, the point of a lot of this!