テキストファイルの最終行からn行分上を取得する方法って、file()を使って
全体の行数を取得→配列化したテキストデータを for を使って取り出す
という方法しかないのでしょうか?

先頭からの場合は、fopen()を使ってファイルポインタを下に移動すれば
最小限のメモリで動作させられるのですが。