同じ場所でこれらが使い分けられている場合を考えます。
I stayed at the hotel.
I stayed in the hotel.
ホテルを宿泊場所として「点」と捕らえていれば、at。
ホテル全体を行動の範疇と捉えていれば、in。
ビジネスホテルに泊まる場合にはatになり、
リゾートで、ホテル内でショッピングもすればスパにも行き、ビジネスセンターも使うとなればinで表したいところです。
どちらが正しいのかということではなく、あくまで選んだ人(発話者)の心情です。
道なんかでも、onとinの使い分けられます。
I came across a friend of mine from high school on the street.
A big fea market was being held in the street.
さて、問題になっているfarmですが、
言われてみるまでonになることは知らないでいましたが、
ここに続くin the countryも一緒に見てみると、納得できます。
islandもonですよね。
He was born on a small island.
しかし、島でも、諸島ならば、inです。
She lives in the Bahama Islands.
「バハマ諸島の小さな島」はどうなるかと考えると
They live on a small island in the Bahama Islands.
あるいはThey live on a small island of the Bahama Islands.でしょう。
(私は個人的にはon、inと使う方が好きですが、実際にはどちらが多いかは知りません。文法的にはどちらもよいと認識しいています。)