Reading the source (French Short Stories for Beginners, Vol.2), I don't see any evidence that the woman (Jacqueline) is just a few years older than the chouette garçon.
The poissonnier is described as un petit jeune that had to takeover his father's business so is likely in his early 20s.
On the opposite, I would say she is at least in her 60s given the sentence:
Jadis, ses parents venaient faire leurs courses au même endroit, et certains commerçants sont restés les mêmes.
Jadis is a literary word meaning a long time ago, similar to the English "yore". This sentence somewhat implies Jacqueline parents belong to a bygone past, i.e. are dead.
Another hint is Jacqueline husband's first name, Marcel. Its popularity peaked around one hundred years ago and almost disappeared after the 50s / 60s, think Homer in the English speaking world.
...mais il est un peu jeune pour elle.
is an understatement and a joke. You shouldn't take it seriously.
Célibataire en permanence is not a common expression (to say the least, it can even be called a hapax as it seems to appear nowhere outside this short story) but insists on the fact Caroline's granddaughter (her petite-fille) is never having an affair. Using both rester et en permanence do not go well together here although for example the sentence la porte reste ouverte en permanence is common and means "the door stays constantly open". You might then translate this sentence as :
She should introduce him to her granddaughter Caroline who "stays constantly single".