Yes this is correct. Autonumber will always increment +1 on create of an object, even if it is not committed after that.
In your case this means a lot of objects were created, but not saved to the database.
What Sjors and Mike are saying is that because of the nature of the AutoNumber attribute type (it's guaranteed to be unique), the value of the attribute is distributed by the database, and this happens at the creation of the object, and not at the commit. This means that every time a user creates an object, but doesn't save the object, a new number was given out. If it is not saved, the number is ‘lost’. As Mike mentioned, if you want to keep sequential numbers, you need to create your own logic.
What I can guarantee however, is that there are no gaps or skips in AutoNumbered values that are put on objects. Somewhere in your application, those intermediate objects have been made, and have not been committed.
Perhaps you can find them by using a temporary After-Create event handler and log the moments when objects are being created.