PHP's GC was hit and miss prior to 5.3 with many arrays and objects becoming unfreeable until the script ended. Because of this, PHP development basically took on an unspoken “who needs GC anyways” attitude because vars were only guaranteed to be freed when the script ended.
Two things are happening which change this:
First, PHP's GC has advanced to where its only unreliable with arrays that contain copies of other arrays. PHP's GC will be totally functional and reliable once this issue is fixed .
Secondly, PHP's pthread extension is coming along pretty well. It's very likely that PHP will have full thread support within the next couple years, making long running scripts as usefull as many Java appliations.
These two things are likely to change many standards in the way PHP is used. For example, your already starting to see serious efforts to create PHP based network services (such as Ratchet) now that the GC is reliable under most circumstances.
So to make a long story short - no, your currently not required to unset any form of resources in PHP because they will all be freed when the script ends. However, unsetting objects and other resources will make sure that each unneeded resource is freed before the script ends, potentially freeing up highly contented resources and thus improve performance.
Moreover, the practice of unsetting objects and resources is likely to become the norm in the near future, and likely an absolute requirement in many cases.
Note that many PHP objects/resources don't fall out of scope until the script ends. This means that unset() is the only way to ensure that their ref count is set to 0 in order to become a candidate for freeing by the GC (before the script ends, that is.)