-Service Builder. Efficient SOA. CRUD is generated allowing me to focus on business logic.
-Most clients have unique requirements and much of the time I have to tweek the Liferay core so that it's open source is awesome.
-Community is large. Updates are frequent.
-Flexible selection of languages I can program in.
-Most of the themes (out of the box) play nice in IE6.
-Many themes and plugins available.
-One site is configurable to allow basically 'multiple sites' (called communities).
-Robust config options.
-Expandos for quicky apps.
-That they never made a way to specify your own password in the back & front ends for create user. All my projects require me to add in fields for the sign-up. There should be a preference that works like the Form portlet.
-From a UI perspective some of the portlets look bland. (efficient but no bells and whistles... yes, I'm greedy).
-If you have to localize it can get tricky. Eg. for the "welcome email" (created user) that gets generated, you can't specify more than one language in the UI.
-Doing a theme can be ... no, actually IS, tedious.
-Client's like the CMS however, they get confused especially where roles/permissions are concerned.
-If you're trying to make an XHTML compliant site yes, the header's there but it will never pass w3c validation. Client's have a hard time understanding the difference between a portal and a web page.