Well, what I wrote was partly wrong, Mac OS X is not the only one responsible here.
I mean... there is a path saved in every framework. This path defines where the OS will have to look for the framework when a program linked to this framework is launched. This path is called the install name.
For example : most of the OS framework have an absolute install name, which is /System/Library/Frameworks/framework_name.framework/Versions/Current/framework_name. Thus when you build a program and link against this framework, this path will be saved in the executable, and that's where Mac OS X will try to find the framework.
If the framework is not found, the OS will look for some other default directories. Some of these are : /System/Library/Frameworks, /Library/Frameworks and /System/Library/PrivateFrameworks.
Now consider that you want your framework to be bundled in your application (let's say the SFML framework). You can't define an absolute path, because as soon as you move your app, the OS will no more be able to find the frameworks in it (as the frameworks moved with the app). The solution is to use a path relative to the program. This can be done with the following path : @executable_path/../Frameworks/...
In a bundle application, you may know files are structured as follow :
app_name.app
+ Contents
+ MacOS
+ Resources
+ Frameworks
The executable is contained in the MacOS directory, and the frameworks you want to provide with you app, in the Frameworks directory (the "Frameworks" name is a convention rather than an obligation).
Thus with the path I wrote, when the executable is loaded by the OS, the OS will be able to find the frameworks in the "Frameworks" directory of the app.
Now... your problem... you cannot install the framework in a specific directory until you change the install name of this framework and redo the linking step of the executable. When doing so, the OS will check for your framework in the directory you set. To do so, there is the "install_name_tool" command line utility. Thus in your case, you would have to redefine the SFML frameworks install names and it would give something like that :
install_name_tool -id /opt/local/Library/Frameworks/sfml-system.framework/Versions/Current/sfml-system /path/to/your/framework/sfml-system.framework/Versions/Current/sfml-system
With this line, the install name of the sfml-system framework will be modified and, after having linked a program against this framework, Mac OS X will first look in the /opt/local/Library/Frameworks directory (and then in the default framework OS directories).
So the issue you're having is because the current install name of the SFML framework is relative to the executable (and targets the Frameworks directory in the app). This has been done to allow the SFML users to provide the frameworks directly in the app.