The main reason / difficulties when using proguard is obfuscating code that uses reflection.
e.g when you instantiate a class by name, like web services, and some xml parser do, this does not work anymore.
Another reason where obfuscation is not allowed, but probably not related to the question:
License conditions like GPL demands the possibility of replacement of the lib by the end user by an updated version of the lib.
Such a lib then are not allowed to be obfuscated (proguard has an option for sich library jars)