When I render out my rather sharp volumetrics, I get the kinds of artifacts shown in the images and links below. They are obviously produced by step size, and samples stepping through the volume, and the easy answer is to decrease step size ad infinitum and increase volume bounces until your computer explodes. What I don't understand is the concept behind these artifacts are produced in the first place. If the dark bands are where light never gets to, why does more light get to the end/beginning of each step in the first place? it suggests cycles has some kind of bias near the step, and more samples/bounces don't help somehow. if someone knows a way to fundamentally limit or stop their occurrence, it would be grand, too.
The banding in the smoke on the side of the cube is due to the volumetric Step Size and is an artifact due to the way in which rays that travel through a volume are calculated.
In the same way that your Render settings define the resolution of the resultant image (eg, 1920x1080) - and higher resolution results in more 'pixels' in the image and therefore considerably more "work" to render - the Step Size effectively defines the "resolution" of volumetrics. However, rather than define the resolution the setting controls how small or large the steps should be between samples of the volume. The smaller the Step Size, the higher the effective resolution.
For each ray that travels through the volume Blender will allow the ray to travel Step Size scene units through the volume before it samples the volume to determine the outcome (whether it scatters, is absorbed, results in additional emission, etc.). The smaller the step size, the more often samples of the volume will be taken and the more complicated the render (and subsequently longer render times) - so this setting is a trade-off between render speed and volumetric quality.
In your scene you have the Step Size set to 0.1. This is in Blender Units and the cube is only actually around 0.5 blender units in size - so any artifacts of the volume are quite considerable compared to the size of the cube.
Typically you should reduce the Step Size to something that would not be significantly noticeable for your scene. This depends on the size of the objects in your scene, the position of the camera, the "fluffiness" of your volumetrics (soft edges will hide any artifacts), etc. so there is no 'one size fits all' best value.
I'm sure all other render engines must use a similar setting - although it might be hidden/masked from the user and possibly even automatically determined. However, in Blender it is one of those settings you need to be aware of and tune based on the available render time and desired quality, scale, etc.
The banding you are seeing is effectively an interference pattern due to the range of factors that you have set up your scene to highlight this particular problem - in particular that your Smoke Domain resolution is only 32 (low for such a large domain viewed at close range), your Step Size is 0.1 (around 20% of the size of the cube that takes up most of the visible frame), your camera is purposefully positioned on the corner of the domain (which is forcing the largest angle between simulation cells and the camera rays). All of this together is creating a perfect storm of interference. As the rays pass trough the domain they either 'hit' a cell at a sample-point along their length (the 0.1 step size) or they don't. Due to how all the factors interact, the position along the ray where it interacts with a cell progresses along the ray based on all the other factors, resulting in some 'bands' hitting one set of cells (closer in so more likely to have denser smoke) whereas slight changes in angle or start point (due to camera ray angle or due to how the domain surface (the start of the volumetric ray) is a different distance at that angle.
Your domain resolution (32) is not a practical value for such a scene - increasing the resolution significantly reduces the banding due to higher resolution smoke simulation causing less interference.