Leafet supports fractional zoom levels: http://leafletjs.com/examples/zoom-levels/ , so it’d be possible to do something with that. Tiles still have whole number zooms, but Leaflet scales these to match the fractional zoom level desired.
There’s one other thing to mention - many map styles don’t have sizes for everything at every zoom level. For example, look at the road widths here:
https://github.com/gravitystorm/openstreetmap-carto/blob/5aef1d5c7eb59a8796516623cb69d6a16b8781ec/roads.mss#L99
There are fewer z14 values than z13 and z15 ones, which means that you’ll see a single “jump” in size between z15 and z13 rather than 2, and that single jump will be larger, which makes the effect you’re seeing even worse.
To summarise this:
o If you created your own leaflet-based website (but not necessarily your own tiles) you could use fractional zooms which would remove some of the effect that you’re seeing, but:
o you’d probably need to change the underlying map style as well to support all zoom levels for more things to eliminate some of the “not all zoom levels catered for” effects.