One solution is to recreate the geometry of the line, not the line itself:
// creating the Line2 instance
var line = new Line2( new LineGeometry( ), material );
// at some later point, updating the line
// by recreating only its geometry
line.geometry = new LineGeometry( );
line.geometry.setPositions( points );
Here is a live demo, see lines 57-58:
https://codepen.io/boytchev/full/YzOYoYO
Another alternative, I guess, is to start with a large vertex buffer, but use only a part of it. Thus you will have preallocated space for all future vertices, but will use only the ones that are visible. This will eliminate the need to recreate of the geometry.