TLDR: j не переназначается на 1 при каждой итерации, если он глобальный.
Когда переменная j является глобальной, она не сбрасывается до 1 для каждого цикла.
outer loop output: i = 1
inner loop output: j = 1
inner loop output: j = 2
inner loop output: j = 3
outer loop output: i = 2
outer loop output: i = 3
Когда переменная j находится в первом цикле while, она сбрасывается при каждой итерации для вывода, например, так ...
outer loop output: i = 1
inner loop output: j = 1
inner loop output: j = 2
inner loop output: j = 3
outer loop output: i = 2
inner loop output: j = 1
inner loop output: j = 2
inner loop output: j = 3
outer loop output: i = 3
inner loop output: j = 1
inner loop output: j = 2
inner loop output: j = 3