If a library you depend on only provides a static version your package can link against it provided that you BuildRequire the *-static subpackage. Packagers in such a situation should be aware that if a shared library becomes available, that you should adjust your package to use the shared library.
I'm pretty confused here,
binutils-devel was merged in binutils-static now binutils-static has been renamed to binutils-devel. Isn't now the same think using BR binutils-devel ?
binutils-devel enforces static linking via ld scripts (in the *.so files). So, as long as you can only link statically with binutils' libs, the quoted packaging guidelines ask you to BuildRequires binutils-static (even if binutils-devel currently gives you the same package). This is for tracking-purposes.