Something is making IIS handle those requests before it gets to .NET code so it is seeing that file doe snot exist and returning a 404 from IIS without ever giving .NET a chance to handle the request.
By default all requests for .aspx files should be handled by .NET and therefore not result in a 404. In fact if the friendly url did not exist but .NET was handling the request, you would not see the default IIS 404 page but would see our custom 404 page, like on this site if you request a non existing .aspx page that is not a friendly url mapping like http://www.mojoportal.com/foo.aspx , it will show our friendly 404 page because the request is still handled by .NET and this allows us to use our custom 404 page. On your server it seems that some check is being made for if the file exists and only letting .NET handle the request if the file does exist.
So, something is either very mis-configured or you have some module of some kind interfering.
Are you using an "Integrated" application pool or a "Classic" one? It should work in either case but I would recommend use Integrated.
Wish I could be more help, but that is all I have for you at this point.