FPC can link against dylibs
Yes, but why does it have to use the {$linklib} directive instead of the usual external keyword? If it cannot use the external keyword, then it seem the MacOS X version of the compiler is either buggy or incomplete.
IIRC, the external 'lib' support was removed because on MacOSX the order how the libs are passed to the linker is important. So you should collect all linklib statements at one place to get them in the correct order instead of letting the compiler mess around with it.

If you don't like this behaviour, activate the code in fpc/compiler/systems/t_bsd.pas line 100

Regarding MacOSX and SDL have a look at:
Yes I am aware of the work arounds, but I have to ask, why do we need to fake the SDL_Main when this is not required on Win32, Linux or even FreeBSD, which I thought MacOS X was based on.

Please enlighten me so I can better understand the nuances of MacOS X.
From the wiki:
For Mac OS X, this is not possible because there this main function is written in Objective C.
Rewriting a C function in pascal and wrapping it is probably easy. However, to rewrite an Objective C function is hard because interfacing from Pascal to Objective C is not possible, so you can't call the Objective C functions in the converted code.