It depends on the DC you're up against. For up to a DC of 14 you're better with +12. From 15-23 you're better off with +8 and advantage. For 24 and up +12 is better again.
You can see this in action
here. Select Graph for View, and At Least for Data. The x-axis is the DC. The y-axis is the probability of hitting that DC. The higher the line at any one place along the x-axis, the greater the probability of hitting that DC.
In practice they are both going to be very similar. +12 has a mean result of 22.5. +8 with adv. has a mean result of 21.82. Having advantage reduces standard deviation, which is fancy talk for saying that the most likely result occurs in a smaller range. Specifically, results from 1-5 on the d20 become significantly less likely, and higher results become increasingly more likely. The difference between the probabilities of hitting any given DC is less than 10% all the way up to DC 25.
From a DM design perspective, I would rather give the player +12 than permanent advantage. This allows the DM to apply adv/dis as is appropriate to the situation. The DM could adjust and give the player a numerical bonus or penalty for the situation, but it's more work than using the default advantage system.
Looking forward, if the character's proficiency bonus increases by 1 then the situation changes to +14 vs +9 w/ adv. In this case having +14 beats +9 w/ adv. for every single DC from 15 to 34. At the closest, +9 w/ adv. gets to 0.25% for a DC of 21. It is increasingly worse the further you get from that DC. Except at the fringes it's still fairly close, but this is a situation that will be amplified with every increase in proficiency bonus. For every +1 to proficiency bonus, the character with expertise will increase their mean result by 2, whereas someone with adv. but not expertise will increase their mean by one. The character with expertise will also increase the minimum and maximum results they can achieve faster than the character without. Using adv. instead of expertise could preserve bounded accuracy.