let left_pad = a.lines().map(|l| l.len()).max().unwrap_or(0);
for (a,b) in a.lines().zip(b.lines()) {
println!("{:width$} {}", a, b, width = left_pad);
}
.zip() assumes both have equal amount of lines. If not, add lines to the shorter one.
A crate such as textwrap can be complementary to @kornel's solution. Textwrap reformats a paragraph so that it fits a given line width, splitting at spaces or using hyphenation. There is even a function temwidth to query the width of the terminal.