Speaking from first-hand experience, the train often goes slower than this speed on sections of this track, going at a crawling pace.
It's quite frustrating being so close to the destination and moving so slowly. Why does the train move so slowly here?
Most of the line is straight, but the last mile is absolutely bonkers.
Entailing a bunch of tight curves where they pushed tracks around to fit a bunch of storage tracks next to the Boston Engine Terminal (maintenance yard).
Then a junction with the Rockport, Newburyport, Haverhill and Lowell lines. Crossovers galore, as 13 tracks neck down to four for the ...
... Bascule drawbridge over the Charles River. And immediately into

the fan-out at the station proper. This isn't even a proper yard throat; there just isn't space for that. Look at the south side of the bridge, there isn't even a crossover there, so each of the two drawbridges serves half the terminal, and trains either enter or exit on the "wrong side". If they lose a bridge they lose half their tracks. Really, the bulk of what could be laughably called a "yard throat" is on the north side of the drawbridge. The single ladder track used by your line is obscured under the US-1 bridge. Fortunately the other lines have another half mile to get sorted, but wow. That is a lot of track work in not a lot of space.
And to answer your question about "why so slow", all the switches are #8 (15 MPH) - they don't have the physical space for #20 (40 MPH) crossovers. And with the yard throat so spread out because of the drawbridge, yeah, you're going most of a mile *with some part of your train" on top of a 10-15 MPH switch.
Also, all these switches are signaled, which means a dispatcher has to talk to the train and work controls to get the track switches thrown over and the proper signal given. When they're at walking speed, they're crawling up on a red signal waiting for the switch to throw and get their green.
Hell of a place to put a train station.
So yeah, I know it's fashionable in Boston to paint the MBTA like a bunch of klutzes that can't punch their way out of a paper bag, but I can't honestly say Metra, Caltrain or GO/Toronto would do much better with those constraints. And really, yards like Chicago Union Station aren't fantastically better. The only people who really have it dialed in is Philadelphia - imagine the moment you reach the bridge you pick up speed and make normal stops again - North Station, City Hall, South Station and onward to Kingston, because most inbound lines run through to become outbound lines, dispensing with terminal nonsense. That's Philly.
And that bridge is a bottleneck, but mainly because there are 4 tracks not 8. (Because there was, but somebody really wanted a few grand of scrap steel).
However, this trip takes 15 minutes inbound to Boston and 10 minutes outbound to Boston.
That's a different thing. That's called "padding". Think about how train schedules work. If the train publishes a schedule, it can't leave the station early or it will leave people behind. However, that doesn't apply at the last station; they can certainly arrive early there, so that's the only place you can "pad" the schedule. By calling it 15 minutes instead of 10, that means if they are up to 5 minutes late, that counts as "not late".
Is it honest? Well, I don't know. What if they are on time but are delayed 4 minutes in the congested yard throat by late trains from Haverhill and Newburyport. Is it the crew's fault? No.