I'm kind of at a loss of words for how to properly ask this. Basically instead of Xcode "smart groups", I want the groups to physically translate into directories on the filesystem. How is this done in Xcode 3.1.2?
If I'm correctly understanding what you are looking for, the answer is to right-click on the project in the Groups & Files column, select Add > Existing Files..., and then pick the root folder that you want mapped in. In the options sheet that will pop down, change the default "Recursively create groups for any added folders" to "Create Folder References for any added folders".
In Xcode the file structure is a bit of a misnomer, the structure that you are seeing in your Xcode project is a reference mapping of your project not a relational mapping of the structure where your project exists. For example, if you create a group in in the project at the root of the project named 'foo' this creates a reference to a container 'foo' that is managed by the project settings, it does not create a folder named 'foo' in the root directory where your applications exists in the file system. This is a point of contention for many developers using Xcode.
Instead, I would suggest (as @smorgan eluded to) that you create your folder structure in the project folder in the file system (Finder), example, navigate to your project and create folder 'bar'. Then in your project control-click on the project and select ADD > Existing Files... and select the folder. This will import the 'bar' folder into your project - and in fact just creates a reference pointer named 'bar' for said location in your project.
If you are they type of person who likes to have a standard or defined structure for your projects, create a project folder and all of the folders and subfolders that you'd normally have - the project skeleton/tree. This may have Source and Resources at the root and then inside Resources you might have additional folders like Images, Audio, Views, Cells, etc... Your Source folder may have UI, Model, Util, etc... and UI may have Start, Settings, App, etc... Once you have your default project folder defined ZIP the root folder up and name it something like "XCode Project Outline" or something that has meaning to you.
When you have a new project you're about to start, copy the ZIP file to where you want your project to live and simple unZip the file and name the folder the name of the project. Then create the new project file in the folder and then follow the ADD Existing File.../Folders... (recursive = checked) and it will add your entire project folder hiarchy to the project. For a more advance bit of magic; include your common bits of application framework that are not application specific and have those files in your ZIP'd file. Then when you unZip and add the folder hierarchy you'll also be adding your basic files (.h, .m, etc...) as well in one quick and easy fell swoop.
One thing I should mention is that if you start from a project you already have and that project is under version control, you'd be best to "Export" the project from your repository. This will build out all of the files based on the current version in (head) and remove all of the hidden .svn references. You can then prune and modify that folder as you see fit to create your project folder template ZIP file. Good luck and happy coding!
I've written a post on my blog demonstrating a short walk through of how to import file folders into an Xcode project, as well as some code for accessing the files in the resource bundle: Xcode, Folders and the File System