http://ez.no/developer/contribs/datatypes/ez_public_keywords should be exactly what you are looking for. If you have existing content classes and objects, you can change the ezkeywords datatype to ezpublickeywords on the database level without information loss (have a look at the source for the exact string, it's defined right at the beginning).
Greeting, Peter
Accessible website starting from eZ publish 3.0 (currently: 4.1.0): http://pluspunkt.at
Lack of such built-in limitations/controls in the default datatypes is one of the major anti-community features of eZ Publish. Luckily, easy to overcome.