When you press the MARK key and save a new waypoint, the automatic waypoint counter in the GPS receiver is a basic incrementing counter that selects the NEXT UNUSED number (000-999) upward from the last stored waypoint number. It does not select the lowest unused number.
So if you store 001, 002, 003, and 004, the next waypoint will be 005. if you delete 001, 002, and 003, the next waypoint will be the NEXT UNUSED number from the last stored number, in this case 006.
Once the counter reaches 999, it will roll to the NEXT UNUSED number above 000, and so-on.
[Why did the programmer code the firmware that way? It probably saved 10 bytes of code and some CPU time in scanning for holes in the sequence. The way it is done, a pointer is just saved indicating the next available number. However, tests will have to be made anyway to insure no duplication is made in case it is the second time around.]
On the other hand: Later versions of Garmin GPS firmware does allow you to change a waypoint NAME to a NUMBER. When you do this, the waypoint sequencing picks right up from your newly entered number just as you would like for it to do. I do not know exactly when this feature was incorporated.