For a pretty good article, try
anandtech's "
Triple Buffering: Why We Love It". The article goes into unbuffered, double buffered, double buffered with vsync, true triple buffering, and (in the update part) reader ahead.
I'm not sure, and have been trying to figure it out before saying anything, and haven't figured it out yet, but...
It seems to me like Mame is not using true triple buffering (at least with the default d3d), but "render ahead" with two back buffers + front buffer (which add up to 3, which leads to the common mistake calling it triple buffering. I can't tell about when mame uses ddraw. If mame is using render ahead instead of true triple buffering, this might be the reason you're topping out at ~110%. I think it might be a fairly easy fix to get the unthrottle speeds back up near other setting's speeds, but I haven't gotten into that yet. Implementing true triple buffering, OTOH, would be much bigger step, as DirectX does support it (render ahead is supported).
Please mind, this is my
current guess. I am not that experienced with coding for video, and haven't studied mame's code completely. So I could be wrong.