Unlike facades, which do not require you to require them in your class' constructor, contracts allow you to define explicit dependencies for your classes.
If you are building a package, you should strongly consider using contracts since they will be easier to test in a package context.