The problem I've run into is that should one of those variables contain multiple entries if ruins the formatting. I've experimented with printf and to attempt to overcome it but I'm not successful thus far.
Expanding shell variables directly within a printf format string is a bad idea; it sh it can lead to unpredictable behavior (in C, it's a serious security hole) if something in those variables resembles a format specifier (%s, %d, %%, etc).
No offense, but I cannot be bothered to analyze your output and reverse engineer the values of your variables.
You should show us the code you are using in its entirety or at the very least print out the value of each variable for each line of output. Then the actual output for those values followed by the desired output.
Regardless of any of the above, your format will be wrecked if any string exceeds its alloted width unless the format specifier truncates it by specifying a precision. In case it's illuminating compare this ...
If your output format must accommodate fields of unpredictable widths, and if you are unwilling to truncate them, then you must resort to inspecting all of the output, storing it in the meantime, and then dynamically generating a format string which can accommodate the widest value in each column.
the data in ${volume} and ${diskvol} is being collected elsewhere and for this thread I'm only interested in how to make the 2nd, 3rd, 4th and so on values in the variable ${diskvol} respect the same formatting as the 1st value in said variable.
The actual output of the script is attached. it works as expected with the exception of the formatting. I'm stuck at how to force the printing of the 2nd and following values into the required column.