Say one is mapping a trail. They create a route relation containing each way that makes up the trail. If that trail has access restrictions (eg bicycle=no, etc.), could/should those tags be put on the relation? It feels wrong, to me, to duplicate it across every single way.
Access tags on relations don’t do anything. Routing is done with highway=* ways (and ferry routes). You need to add them to the ways.
Whether or not you need to add bicycle=no to a street/path section depends on the type of highway=* you have and on legal access restrictions in your country. E.g. on footways you don’t need to add bicycle=no explicitly, but it’s a very helpful tag to add on highway=path.
Any access restrictions on individual highway segments need to be available to data consumers which aren’t consuming the whole route, or even aware that the segment is part of a route relation.
In any case, longer routes are unlikely to have a single set of access tags which apply to all segments. For example, the UK’s National Cycle Network Route 1 has segments which are bicycle=yes, bicycle=permissive, bicycle=dismount, bicycle:conditional=* and without a bicycle=* tag because it’s implicitly =yes on most public roads.
It’s a common misconception that relations are a way of bouncing down tags onto their constituent ways.
They are not. A relation should represent a real-world object in itself. A route relation exists because “there’s a signposted route here”, not because “there are 50 roads all with the same name”.
So it’s absolutely correct to tag access restrictions on ways, and wrong to tag them on a route relation.