I think Ed did a very good job. The entire season could have collapsed if that character was poorly cast or written annoyingly. Instead they cast someone who could handle himself superbly in scenes with an experinced cast that was acting in these roles before he was born. Not a lot of actors could do that. As cool and Metafictional, as it would have been to have James McAvoy in the role Ed Speleers nailed it.I'm just going to say it, Ed Speleers is the wish.com James McAvoy. But they both got to work with Alice Krige in a vaguely motherly role and both got to be involved in two different franchises with Sir Pat
With regards to his actual age vs the show age, I thin one mistake this season made was setting it in 2401, a year after Season 2 and 2 years after Season 1, making Jack Crusher a maximum of 20 years old. That was pointless, especially in the 24th century when humans live in excellent health well into their 100s.
I think the show should have been set in 2409 or 2410. Yes it would have aligned it with STO, but that's not the point It would have given Picard ten years as Starfleet Academy Chancellor, Seven years to to become a Commander, and Starfleet years to rebuild itself post-Season 1. It would have allowed Ed's age to match his character (nearly). I kind of think this was the original intent and they changed it along the way, maybe in post production. There were mistakes with the age of the Titan refit, for example, and indication a lot more time passed than a year in uniform changes, starship changes and character jobs.
I wonder why they did it. Maybe having Picard not talking to Beverly in 20 years vs 30 seemed better. Maybe they felt that pushing it back made Picard's assimilation too far in the past (45 vs 35 years prior). Maybe they wanted Jack to be young enough that Picard could still be a fatherly influence on him. Who knows.