Pikachu is low tier because he is a terrible character.
His horizontal range is lacking, especially in the air. Fsmash has range but is slow and punishable, so you either have to mindgame it or combo into it (and pikachu doesn't have many combos at all that end in it). Dtilt has range but doesn't lead into anything except the occasional techchase. Ftilt is good, but that's partially because the rest of his stuff kinda sucks or is situational.
His shield sucks. His grabrange sucks. His throws are ok, bthrow is nice for edgeguard setups and uthrow chains of fastfallers, but it gets progressively more difficult for pikachu to grab in the first place with his crap range and few attacks that can (but don't necessarily) lead into grab, as the opponent's skill increases.
His weight sucks. He dies off the side and top relatively quickly. Added to that, his weight allows him to be chainthrown by a good portion of the cast, and easily comboed by a greater portion. Getting grabbed by some characters can mean the loss of a stock, and 50%+ combos on pika aren't uncommon.
His recovery is lengthy and versatile, but there are flaws to it. His hitbox during parts of it is huge. If you don't position it just right it can be laggy on landing. And he needs it anyhow to make up for how fast he dies normally, without it he'd probably be bottom tier.
Oh yeah, and his damage output sucks. Usmash hurts, fsmash hurts, dair hurts, and everything else tickles. He has decent comboability against most characters, but they're usually difficult to set up or do a whopping 30% over the course of 6 moves.
He does have a lot of neat tricks, but once you get past those you'll realize that's mostly what he is, gimps and gimmicks. Beneath that he's a terrible character, fitting of his spot in the tiers.