Because Twitter and IM are completely different services.
On IM you log in and, while you are logged in the MSN/ICQ/Whatever servers know about that logged in instance of the client and know where to deliver messages to.
Twitter does not send messages to the client, it stores the messages on a server and the client then requests a list of messages.
For a Twitter client to enable push they would need to permanently be downloading the twitter stream for every person who owned the program AND be parsing the entire Twitter stream for @ mentions. In essence, you would practically need the same server processing as Twitter itself has which you will not be able to do unless you have millions in VC funding.
Twinkle may be the exception since they do run their own servers and cross post to Twitter, but it will most likely only work between Twinkle users.
This is an issue that Twitter needs to address OR one of the clients needs to set up a monthly subscription plan that would enable push notifications for subscribers.