I think it happens, because a table is sorted only once (or when you go in and sort the table again manually). Therefore, if anything pulls it out of whack, it won't resort without manipulation.
Basing a form on a query as it's control source is good practice, as it speeds up your application...