Since user libraries have been introduced in eclipse 3.x I had never liked to use user libraries. They lack support for portability. It is just not possible to share user libraries. Once defined, a user library contains hard coded paths to all of the referenced libraries. User libraries lack the utilization of path variables.
Now since user libraries have been adopted by various eclipse sub projects (WTP, DALI, …) this thing even got worse. For example you defined 2 user libraries (e.g. JPA and JSF) with references to the same library (i.e. the same file path) then eclipse would just refuse to add both user libraries and report a duplicate entry error for the classpath. I have reported this in eclipse bugzilla.
Support of variables within user libraries has been pending for a while, see eclipse bugzilla.