たしかに ID: 1, 2, 3 も小数点以下6~7桁目程度の差が生じていますね。
たとえば ID: 2 のジオメトリ情報(座標値)を確認してみると以下のとおりでした。
MultiPolygon (((
53727.09608578203915386 -103390.91826425890030805,
53822.01992106921534287 -103359.27698582984157838,
53822.01992106921534287 -103472.28155164791678544,
53736.13645104748138692 -103476.80173428064153995,
53727.09608578203915386 -103390.91826425890030805
)))
ファイルは Shapefile 形式であり、仕様上 double (倍精度浮動小数点数)として
保存されているため、有効な桁数は約16桁です(2進数で53ビット分)。
(表記として16桁以上表示されていますが、有効桁としては約16桁)
平面上の多角形の面積の求め方でよく使われる式は

となります。
このため乗算の結果で整数部が11桁生じ、小数部の精度は5桁となります。
これは (53800, -103400) 付近に存在することで発生するものですので、あらかじめ
差し引いて (0, 0) 近くに並行移動させ、乗算を行っても整数部の桁数が増えないようにし
できるだけ有効桁数を保つコーディングテクニックなどもあります。
こういった実装の差や、場合によっては処理系の最適化で結果が変化する余地があります。
ちなみに、検算のために浮動小数点数ではない手法(有理数型)で ID: 2 の面積を
誤差なく計算したところ 9071.830658727436 になりました。
他のポリゴンについては確認していないのと、 QGIS の実装そのものを見れてないので
必ずしもそうだとは言い切れませんが、この例だと area($geometry) がもっとも
正確な結果を示しました。
なお、かやまさんがおっしゃられている地図平面上の面積 area($geometry) と
地球楕円体上の $area は異なる結果を示し、 GIS ではこちらの差異の方が、よく
トラブルや勘違いのもとになることがあります。
(今回は処理結果を確認すると地図平面上の面積における誤差のようでした)