Why is this happening?
In Bash time is a reserved word (keyword) that can precede and measure not only a simple command; it can measure a pipeline. As such, it must be the first word. This syntax only informs Bash that you want to measure time; the rest of the pipeline is still processed by Bash as if time wasn't there.
If time is not the first word and still can be interpreted as a command, it's interpreted as a regular external command (not even a builtin), looked up in $PATH and executed; e.g. it can be /usr/bin/time. This tool processes its arguments and builds the actual command from them.
The two utilities produce output in different formats.
And is there a way to keep variable assignment while having the output in three lines?
Yes. You can use time as the first word, so it gets interpreted as the keyword:
time VAR="" sleep 2
Note both implementations support -p that changes the output format to that specified by POSIX (in fact the support for -p itself is required by POSIX). This means the following two commands will produce output in the same format:
time -p VAR="" sleep 2
VAR="" time -p sleep 2
Under the hood, however, these are very different.