Have you talked to him about manners? Being a "Know it all" is one of the worst behaviors. It is embarrassing for people to witness it and he will not realize this till someone tells him. Remind him he is not the center of anyone's universe. He is a part of it.
Make sure he gets lots of interaction with other kids. They can help him deal with this bad habit.
I am sure you belong to a homeschool group, make sure he is really involved.
Church groups, scouts, group theater, art classes, music lessons, group sports. Send him to stay away camp. These types of things will challenge him. It will also put him in unfamiliar territory. He will also see he is not perfect or the best at everything. Nobody is and he needs to learn that this is ok...
Maybe give him some more challenging activities.. computer games, board games, more advanced books, maybe a slightly more advanced academic subject. If he does not already know these skills, get him a skateboard, basketball, tennis racket, pogo stick, roller blades. If he has to struggle or not make such a great grade, this is a positive thing. He needs to learn this, just like any other subject.
Nothing worse than being in the real world and not knowing how to handle failure, loss, or some loss of confidence if he has not really experienced it.
Teach him that nobody likes a "prig".