D, 133 127 126 125 121 119 bytes
import std.conv,std.stdio;void f(T)(T a,T b,T s=0){for(T j;j++<s;)' '.write;a.writeln;if(a-b)f(a+1,b,s+a.text.length);}
Jelly and APL were taken.
If you're fine with console-dependent results (goes off the same principle as Giacomos's C answer) here's one for 72 71 bytes:
import std.stdio;void f(T)(T a,T b){while(a<=b){a++.write;'\v'.write;}}
##How? (Only D specific tricks)
f(T)(T a,T b,T s=0)
D's template system can infer typesfor(T j;j++<s;)
Integers default to0
.' '.write;a.writeln
D lets you callfun(arg)
likearg.fun
(one of the few golfy things D has)a.text.length
Same as above, and D also allows you to call a method with no parameters as if it was a property (text
is conversion to string)- One thing that might be relevant (I didn't use this though) newlines can be in strings!