road adjacent to areas (forest, meadow, etc.) often with gaps

I have problems with landuse gaps next to roads, see example. From a database view, these gaps are reflecting inconsistency: Is there something else at these areas? Or when using OSM data in landuse analysis, you always have these gaps to fill manually.
While there was a discussion in 2009 about it, I can’t really follow the problem. For example, when a road has a forest on its left side and a meadow on its right side, it would be totally natural that they share node with the road since

  1. They are adjacent
  2. A line feature can represent an area by width information
  3. With that width information, a renderer can easily depict that road

Plus, you don’t have ugly maps and data gaps. Can someone convince me why to do otherwise and leave gaps?

This is not true. Land utilization doesn’t interact with the roadway itself functionally. The “forestry” (pay attention to this meaning) and meadow site don’t extend onto the road spatially.
First of all, you should separate the 2 aspects.
Land-use: This area in between including both sides and the road should be a landuse=highway.
Landcover: To represent the paved area, there should be area:highway=tertiary in between 2area:highway=footway + footway=sidewalk if there’s a sidewalk for the roadways.
You will still need to render them yourself to not have “ugly maps”. An inconvenience with these area-based details to not have “data gaps” is editing will be complicated. However, this is still better than the mess of attaching roads along areas.

The most important reasons have been highlighted in the aforementioned discussion:

The cruicial thing here is that the way represents only the centerline of the road, not the whole paved area. And the centerline is only some virtual representation (so is any other axis - i.e. axis of symmetry) of the road, introduced just for routing purposes. On the other hand, landuse/landcover shows explicitly the real area covered with some specific feature, and it should precisely correspond to the area. So they are two independent kinds of objects - the two different ideas of their representation. If you merge them it would simply mean, that the grass/forest grows on the whole road area (as it would reach the road axis), which is obviously not true. Since OSM data are not solely used for the routing, but they may also serve any other purposes/analyses, in some cases it may be very important to precisely detrmine whether some kind of infrastructure (i.e. fire hydrants, street lamps, etc) are within the road area (lane, sidewalk, etc.) or they are located beside it - at the greenery. With landuses atteched to the road centerlines distinguishing that is impossible. Although you may add width, on most complex road junctions this does not inform you about the real road geometry (on a side note, it remains unclear if one means the width only as the width of lanes or includes also the sidewalks/cycleways if not mapped separately).
As we must not tag for the renderer, merging these two kinds of objects just to make the map more aesthetic seems to be wrong, unwanted and affects the accuracy of the data.
As a remedy for the ugly gaps, first of all the landuses should be precisely aligned to the road side (where they actually ends), so that the curves are smoother and parallel to each other. The same is for the road centerlines. As a second step, I would encourage to use the highway area tagging concept, as already mentioned. Although mapping this way can be quite tedious, the obtained output data seems to be the most accurate and precise - and the highest possible data quality is what we all want to obtain (I hope so :)).