The way I see puppets, they shouldn't just be mounds of flesh that look like people and wail on your opponents. Each puppet should be unique and have its own function. Like, a full level 20 puppet master might have two "wall" puppets to defend their master, two "blaster" puppets to cause havoc, and one "assassin" puppet to harass spellcasters.
Essentially, what I'm talking about is creating a puppet system where you can creat puppets that serve completely different roles, and each one has a limited, but varied set of options. Maybe puppets can only use 3 different abilities, but one can cast Fireball, Cloudkill, and Ice Storm... while another can only use Iron Wall, Blade Barrier, and Stoneskin. But the abilities can't just be spells, they'd basically be EX versions of equivalent spells, created through physical mechanics built into the puppets.
I don't know, I'm sure that it would take a lot of playtesting and going over the wording with a fine-toothed comb to keep it from being overpowered, but the amount of variable options for this sort of class is immense if done right.