Turns out my best time wasn't today but when I compared myself to the KoM, I noticed that according to the Strava map both of us avoided the cobbles and instead swerved round the back of them, following the actual road instead.
This has nothing to do with mapping, and everything to do with how tracks are matched to segments.
I'm not 100% sure, as I don't use Strava much, but I think that to match a segment a track must pass near enough to match the start and end points, and inbetween there's a loosey goosey type of matching algorithm. This is because of the limited accuracy of GPS tracks, and the fact that tracks consist of a series of straight segments, not smooth curves.
Probably what has happened is that there are two possible routes between the start and end points of your segment: One over the cobbles, the other round the back. The two routes are probably sufficiently close together for the matching algorithm to treat them as equivalent, so a ride round the back of the cobbles is just as good a match as one over them.
I imagine they have fine tuned the parameters to avoid false negatives (failure to match segments that really exist). Your false positive (a track round the back of the cobbles falsely matching a segment over them) is the price you pay for this.
That's all supposition, mind.
Edit: And you'll probably find that "snap to route" only affects where the pointer gets displayed on the map. It (probably) won't affect the recorded track points. (Again, supposition)
Edit edit: A bit of searching throws up these interesting articles:
https://support.strava.com/hc/en-us/articles/216918187-Segment-Matching-Issues
https://support.strava.com/hc/en-us...-Segment-Creation-how-to-create-good-segments
Possibly your segment has the problems described under "Very Short Segments" in this one.