$handle->rate_limit_status() is actually reporting the status of your IP address, rather than the authenticated user. When rate_limit_status is called without an authentication header, Twitter returns the rate_limit_status for the IP address. When sent with an authentication header, Twitter returns the rate_limit_status for the authenticated user.
Currently, Net::Twitter never sends an authentication header with any API call, initially. That's basically because of the way LWP::UserAgent works (and because of the HTTP standard). Net::Twitter sends a call without an authentication header. Twitter replies with a 401, and headers indicating authentication is required, and importantly, that it accepts Basic Authentication and the Basic Auth Realm. LWP::UserAgent then sends a new request with the appropriate headers.
Rather than sending a 401 for rate_limit_status, however, Twitter sends a status code 200 and the rate_limit_status for the IP address.
This issue will be addressed shortly.
So, you're getting the rate_limit_status for your IP address. Do you have other twitter applications running for other IDs? Are you behind a firewall where your external IP address (the one Twitter sees) is shared? That might explain the discrepancy.