The reading of 1000 is a special value that means "I never heard the echo bounce back." It's just giving you a large value in this case, much larger than the range of the sensor. This is also the reading you will get back if no sensor is physically connected to the robot.
The range of the sensor is about 2 to 200 centimeters so if it sees something you'll usually get a number between 2 and 200 (minimum sensing distance is 2cm according to manufacturer and that does seem accurate). My code waits for the echo until a little past the amount of time that it would take sound to detect an object 200 cm away, so it is possible you might get 250 if you're in an ideal situation for the sound waves to detect.
If an object is receding, it presents less and less of a target for the sound to bounce off. A small object or a very soft object like a pillow may not reflect enough sound to get a good reading. The shape of the object also impacts how much sound bounces off in the direction of the robot, and this will impact how far away the object can be detected reliably.
The most accurate detection therefore will be large, flat, hard objects oriented such that the sound will all come back toward the robot (i.e. parallel to the robot with respect to the sensor). A wall is ideal and you should find you're getting very accurate readings from things like walls.
Smaller objects are definitely detectable, a shoe box does not present a problem, neither does a 2x4 piece of wood standing up longways. I've even had mine walking around the kitchen and most of the time it will even see a fairly thin chair leg (1 inch diameter wooden leg) when it gets within a foot or two.
If you're in a borderline situation, sometimes the object might be detected and sometimes not, this would cause the 1000 readings to intersperse with "real" readings.
I'm less sure about the cause of the "false close" type readings though.