(this subject was originally brought up in the Arduino 0018 announcement, but that's not really a good place for feature/bug discussions!)
The Arduino IDE creates a directory in which to place the build targets (.o, .elf, .hex, etc)
In older versions of the IDE (pre 0018), "Verify" builds create a temporary directory (usually in a place like /tmp/build.; a standard unix-like thing to do), and "Upload" builds would create a subdirectory "Applet" in the Sketch directory that was permanent till the next build (remained despite exiting the IDE.)
In 0018, the behavior was changed to avoid read-only filesystem issues (unix installs of the IDE in shared non-writable directories (/usr/bin/...) and MacOS instances running from the distributed disk image) with the Example sketches; a temporary directory is always used.
I guess that partially this is inherited from Processing ?
About the same time (?) Java distributions began create "temporary filename" names that are more complex and obscure than they used to be (On a Mac I get: /var/folders/Xw/XwjZcQ842RWmnU+8ZSLT7U+++TI/-Tmp-/build9142969154033714507.tmp/ )
This combination has made it difficult and awkward to track down build files that are useful for "advanced" analysis of the Arduino sketch (.hex files for bulk programming, .elf files for objdump to look at code efficiency, even generated .cpp files for tracking down compile errors when the line-number translation fails.)
The use of a permanent "applet" directory is more useful and important with Arduino than with processing, and we'd like it back! (perhaps as an option.)