Read a file from SD in reverse order

If I write the array to flash (PROGMEM) will I be able to delete it and re write it (the array) again every time a new line is written to the SD file and, if so, will the flash memory be freed up after deletion?

Flash memory is read only, so forget about writing to it.

Reading the whole file into an array an then iterating through the array backwards works until the file gets to a size that makes the array too large for RAM.

An array of 20 pointers, to point to (copies of) the last twenty lines, will always take up the same amount of space, regardless of how many lines there are in the file.