Why does Cura insert G0 commands between G1 commands while Slic3r doesn't?
Formally, G0 is a rapid move and G1 is a coordinated move. A G1 will cause the printhead to move in a straight line from the begin to the end position, whereas a G0 allows the printhead to move in any curve, so long as it ends up in the target position. Because of acceleration and deceleration constraints, it can sometimes be faster to move in a curve rather than a straight line.

However, I don't think any actually firmware implements this, and a G0 behaves in the exact same way as a G1.

What the piece of G-code you posted is doing is creating a solid infill, which consists of a bunch of parallel lines, each slightly offset from the next:



It makes sense that no material is extruded when it moves from one line to the other, as otherwise too much material would get deposited at the edge.