In short it is not efficient/possible for the Facebook team to deal with it.
The way I see it, idle is used to show that the user's attention is not in browsing Facebook. To elaborate, a user can be playing an intensive game (Bejeweled/Farmville) and end up in idle, but as soon as focus moves away from the game, online status resumes.
The best way is to go offline but for specific people using friend lists.
And here is an engineer from 2008 explaining why this is difficult
The most resource-intensive operation
performed in a chat system is not
sending messages. It is rather keeping
each online user aware of the
online-idle-offline states of their
friends, so that conversations can
begin.
The naive implementation of sending a
notification to all friends whenever a
user comes online or goes offline has
a worst case cost of O(average
friendlist size * peak users * churn
rate) messages/second, where churn
rate is the frequency with which users
come online and go offline, in
events/second. This is wildly
inefficient to the point of being
untenable, given that the average
number of friends per user is measured
in the hundreds, and the number of
concurrent users during peak site
usage is on the order of several
millions.
Surfacing connected users' idleness
greatly enhances the chat user
experience but further compounds the
problem of keeping presence
information up-to-date. Each Facebook
Chat user now needs to be notified
whenever one of his/her friends (a)
takes an action such as sending a chat
message or loads a Facebook page (if
tracking idleness via a last-active
timestamp) or (b) transitions between
idleness states (if representing
idleness as a state machine with
states like "idle-for-1-minute",
"idle-for-2-minutes",
"idle-for-5-minutes",
"idle-for-10-minutes", etc.). Note
that approach (a) changes the sending
a chat message / loading a Facebook
page from a one-to-one communication
into a multicast to all online
friends, while approach (b) ensures
that users who are neither chatting
nor browsing Facebook are nonetheless
generating server load.
[Source - Facebook Engineering Notes - Facebook Chat ]