No. No es necesario.
A ver si me explico bien.
Cuando haces New() de un puntero, éste procedimiento le dice al SO (Sistema Operativo) que reserve un espacio de memoria, esto quiere decir que solo y únicamente ese espacio de memora podrá ser accedido por ese puntero. Esto previene que cualquier otra variable sobreescriba esa región.
Dispose() hace lo contrario, le dice al SO que puede disponer de ese espacio de memoria como lo crea conveniente, pero esto no significa que el puntero deje de existir o que el contenido de ese espacio de memoria apuntado por el puntero desaparezca. Por el contrario sigue estando allí, solo que desde el punto de vista del programa esa región ya no es segura, el SO no le puede asegurar al programa que solo él y únicamente él puede escribir en esa región.
Ahora bien ¿por qué hay que usar Dispose() luego de un New()?, porque si comienzas a usar indiscriminadamente New() el SO estará marcando como reservado a tu programa mucha memoria que luego nunca es liberada, corriendo el riesgo de que agotes la memoria.
En un entorno monotarea como el MS-DOS esto no parece muy importante, pero en un entorno multitarea como Windows 32 es fundamental. Sin embargo MS-DOS sí trabaja con memoria dinámica, por ejemplo, cada vez que invocas a un procedimiento o función el SO copia el código ejecutable de ese proc. o función a una región de memoria que esté libre, lo ejecuta y al finalizar libera esa memoria.