The thing that keeps players playing any game, regardless of whether it's the same or varied levels, is game feel/juice. A game with sufficient juice doesn't actually require much at all to keep a player interested - the connection between player and game is enough to stimulate the mind and keep the player thirsty for more.
Consider how much time people have wasted in Mario 64 just jumping around in the garden - there's very few “game mechanics” involved in that (that is, no score, bosses, challenge, levels, progress, etc) and yet it pulls people in. Really, mechanics should reinforce game feel or augment it.
Think like this: you want the “big payoff” moment, so you do something like shake the screen and play a cool sound effect with some other graphical some flare. There's your feel. You reinforce that payoff by linking it to the game mechanic of connecting a chain of dots, and further reinforce it by adding to the players score or changing the background on occasion. The feel is the first thing you design, the mechanics just justify the feel to the player and give them something to work through to get that feel (human brains are weird: if we don't have to work for the payoff, we don't care about it). At that point, it really doesn't matter how trivial or repetitive the mechanics are, provided the payoff is good and spaced out enough so as not to get boring through over-exposure.
Ask yourself, just how “varied” is a game of tetris? I can't find it now, but an article estimated that this single game has wiped out hundreds of thousands of man-hours of work… and it's extremely repetitive. Most of the vastly successful games are. Candy Crush doesn't exactly mix it up much or have advanced progression systems, AAA graphics, deep AI systems, procedurally generated realistic environments or… you get my point. Games are simple. Good games have a good core, and then layer on mechanics to augment that core. So start with your core: ask not what the player can do but what the player should feel.
TLDR: Cram as much game feel into your game, then make mechanics that justify the feely-moments, then worry about things like repetition. You might not ever find a reason to care about it.