Excerpt from the comments, serves as a TL;DR
Steve is paying for his lack of providing a car for 1 out of 3 trips, right? Assuming it's a fair compensation, he's not really getting a favor (nor are you providing a service) from you as much as he's contributing equally.
From the looks of it, Steve's a bit more practical about your arrangement and doesn't quite see friendship as part of the deal. Regardless of why he chooses to approach the agreement this way, I see nothing wrong about what he's doing.
As I said, you're free to end the agreement, but I'm not convinced that Steve's behavior is a valid justification for doing so.
This maybe isn't what you want to hear, but I would consider dropping an agreement because of Steve not meeting an (unspoken) agreement of being your friend is not a valid justification.
That doesn't mean you can't change your mind. The agreement was not set in stone and you can change or revoke it. But if Steve were to be upset about it, I'd say he's got a fair point of view (unless he exagerates).
The extra minutes of detour would be fine if the ride itself was fun. It's not really because Steve doesn't talk much and only looks at his smartphone.
While I can understand you being disappointed that Steve's not partaking in conversations, I don't think you can require him to do so either. If he doesn't want to talk, he shouldn't be forced to.
Your carpool agreement does not bind him to be your friend.
Steve also comes across as arrogant and judging from the few stories he told me as a somewhat vengeful or narcissistic person (proudly talking about how he was almost fired for ignoring his superiors orders).
Is he actively arrogant (or otherwise unfriendly) towards you, or is he simply talking and revealing things about himself that show he is an arrogant person?
If the former, you have a valid complaint about Steve's behavior.
If the latter, you're effectively judging Steve based on his personality. This by itself is not a valid reason to break the agreement. Not everyone's character is flawless, not everyone is able to remove/hide/counteract their personal flaws.
If Steve is not actively acting out against you, I don't think you can really judge him for misbehaving. At worst, you can consider this a clash of characters rather than misbehavior on Steve's part.
Even worse at school he does ignore Bob and me (avoids eye contact, walks very far behind or in front) and only talks with his clique.
If he's specifically avoiding you or talking about you behind your back, that is a slight.
However, if he's simply hanging out with his friends instead of you, that's perfectly fine. Just because you carpool doesn't mean he needs to hang out with you during the day. He did not sign a friendship contract.
While he doesn't have to acknowledge my presence I also don't have to drive him to school.
While I get your point, do keep in mind that you came to an agreement where you drive him to school. Steve didn't particularly agree to hang out with you during school hours.
I want to avoid getting personal because he will still be in my class for the rest of the year.
You're judging him based on him not meeting unspoken expectations, and his character. While you're of course entitled to your opinion, you have made it personal (at the very least to Steve's point of view).
The only way to avoid it getting personal would be by lying about your reasons to end the agreement, and lying is inherently not a good interpersonal solution.
While your assessment of Steve's personality may be accurate, even if it is spot on, it does not inherently invalidate the carpool deal that was made, as long as Steve is not actively being a dick to you.
How do I tell him politely I won't drive him anymore without making him an enemy?
If Steve were already being actively disrespectful towards you, as per your claim, how would you expect him to stop doing so after you cancel the agreement? I doubt it's going to get better.
You can't guarantee that Steve won't mind you breaking the agreement. However, that doesn't mean you're not allowed to change or cancel the agreement. The best you can do here is be polite, explain that it's a mismatch of characters and do not resort to namecalling, criticizing or judging. Don't make statements that imply he is the problem. Focus on the fact that you and him are a bad fit, rather than one person being "bad".
Offer him a reasonable notice period so he can make arrangements. I can't tell you how long; that very much depends on Steve's situation (and general behavior towards you during the notice period). Talking to him might even be enough to shake him loose and address the issues you've experienced - if you're willing to give him a second chance at least.
Whether Steve takes offence or not, depends on Steve. If he does get upset (within reasonable boundaries), you can't really hold that against him.