Purpose of keepalive.aspx
Here's the full code of the page in Sitecore 8.0:
<%@Page Language="C#" %>
<%@ Import Namespace="Sitecore.Analytics" %>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server" enableviewstate="false">
<title>Keep Alive</title>
<script runat="server">
protected override void OnPreInit(EventArgs e)
{
Tracker.Enabled = false;
}
</script>
</head>
<body>
<form id="form1" runat="server" enableviewstate="false">
Keep Alive Page
</form>
</body>
</html>
In Sitecore 8.2 it's even shorter:
<%@Page Language="C#" %>
<!DOCTYPE html>
<html>
<head id="Head1" runat="server" enableviewstate="false">
<title>Keep Alive</title>
</head>
<body>
<form id="form1" runat="server" enableviewstate="false">
Keep Alive Page
</form>
</body>
</html>
It's pretty clear this page doesn't do anything meaningful—it even has no code behind.
So its purpose, indeed, is to keep the application pool alive.
Extending Sitecore client sessions
As G Killian has discovered,
this page is also regularly requested from JavaScript to extend browser sessions of users logged into Sitecore Desktop. Image source requests to this page ensure that the user won't be logged out from Sitecore provided that they keep their browser open. A great find!
Disabling IIS pool recycling
Yes, you can (mostly) disable automatic IIS pool recycling, although it is a bit more complex than just removing the idle timeout. See more in this answer:
https://serverfault.com/a/333948
I believe Sitecore included its own keep-alive mechanism because IIS does recycle apps by default, and Sitecore wanted to override that behavior out of the box.