It seemed that the obvious answer was to not have NumPy allocate the data memory.
This is related to a problem I had earlier.
So, rather than:
a = numpy_to_vtk(large_NumPy_array)
dataset.GetPointData().AddArray(a)
dataset.Modified()
I did this:
a = vtk.vtkFloatArray()
a.SetNumberOfComponents(1)
for e in large_NumPy_array:
a.InsertInextValue(e)
dataset.GetPointData().AddArray(a)
dataset.Modified()