I just have some random thoughts. First, I have no experience with the lower level AoPS courses or books so can't comment on your DS' problems with AoPS Pre-Algebra. However, I encourage you to try again later, especially with the actual classes although the books are great too, when your DS is ready for Algebra 2, Geometry, Algebra 3 and Pre-Calculus. While there are quite a few problems from competitions, those are not the only problems in the books or courses, at least the ones that I have seen. More importantly, AoPS courses force the student to actually understand rather than memorize at a superficial level because the students are deriving formulas and writing proofs. Also, once you are confident that your DS has mastered Algebra I, you may want to try the AoPS Number Theory and Counting/Probabilty courses/books.
It also may be that you started your DS too low with Pre-Algebra if he is already at a Algebra 2 level. As you are concerned with holes, you may want to use the short AoPS tests to verify that your DS has mastered Algebra 1 and Geometry. That way, you can then go with confidence to another curriculum for Algebra 2 and beyond.
I am not trying to sell AoPS as there are a couple of respected options already mentioned by other posters. However, your DS will eventually need some kind of high level math curriculum to supplement his school math curriculum if he is serious about pursuing math. There is nothing wrong with skimming concepts off library books if he enjoys reading them. In fact, when DS was his age and a bit older, I used to pick up random adult math books from the library and just left them around for DS to read or not as he wished. From your post, I am assuming that your DS is already reading adult math books from the library so perhaps continue in a low key fashion.
Since your DS obviously loves math, I am not sure you need to worry about "interesting and fun" since he likely already finds math interesting and fun. Perhaps look for a highly recommended textbook on Amazon and go through that quickly with your DS to cover holes?