There used to be two Regeneration options applied via attributes to the interface implementation
RegenerationOption.Automatic
RegenerationOption.Manual
Now there is only the Manual option and the RevitAPI.chm states this about it:
"The API framework will not regenerate after every model level change. Instead, you may use the regeneration APIs to force update of the document after a group of changes. SuspendUpdating blocks are unnecessary and should not be used. Performance of multiple modifications of the Revit document should be faster than RegenerationOption.Automatic. Because this mode suspends all updates to the document, your application should not read data from the document after it has been modified until the document has been regenerated, or it runs the risk of accessing stale data. This mode will be only option in a future release."
It would seem from the description that your command should not regenerate after each line added removed however noted elsewhere is that Regenerate is called upon transaction commit.
I think this section of chm needs to be rewritten because Automatic was removed long ago and people may wonder what a SuspendUpdating block is.
"The API framework will not regenerate after every model level change. Instead, you may use the regeneration APIs to force update of the document after a group of changes."
Not sure this statement above is completely true either since it is noted elsewhere that Regenerate is called upon transaction commit.
You should commit transaction after all lines added and removed, should only get one regeneration then I assume. Could also add logic to see if anything unchanged could remain, to cut down on adding and removing all lines.
Adding and removing may also bulk up the size of your file. It has been noted to me in the past (especially with workshared model) that some database records will remain until compact model option is used.