So, back to the original question, do I need to remove the line from the object collection before it gets reDIMed, or not?
In classical VB (5/6/VBA) the minimal variable scope is limited within the Sub/Function. So, in VBA age, we constantly see a Sub/Function usually begins with quite a few lines of Dims to declare variables before any meaningful code.
However, in VB.NET (or C#), a variable's scope can be narrowed down to a logic code block, such as a For/While/Try...Catch/Using blocks. So, it is perfectly OK to declare variable inside a loop (I'd go further to say that it is even perferred. That is, it is preferred to only maintain a vriable in minimum scope necessary).
However, do not confuse variable scope and the notorious requirement in AutoCAD .NET API of disposing DBObject your code creates but is not added to database.
Yes, DBObjectCollection is disposable object, and you can use it with Using...End Using block. However, it is not an DBObject, and we do not have to explicitly dispose it. We can leave it for Garbage Collector to do its job. But if it contains DBObjects your code creates, then you need to deal with these DBObjects: either add them into database, or dispose them.
I did not take much time to read the code you posted, but it looks like a lot new entities (and even COM AcadEntity!) would be created just for calculating purpose, and they are not disposed. That is where the code could be problematic. So, even you said "do not tell you...", if I were you, I'd rather REFACTOR the code, at least the code you showed here.