You forgot to mention the sticky form values. It is immensely useful to be able to insert a form element into a template and have it just work correctly without lots of template-side gyrations. In fact, I'd say this is the proper way to use things like CGI::Application and HTML::Template.
sub fizzbinbox {
my $self = shift;
my $tmpl = $self->load_tmpl;
my $q = $self->query;
$tmpl->param(
fizzbin => $q->checkbox_group(
-name => 'words',
-values=>['eenie','meenie','minie','moe'],
-defaults=>['eenie','minie']) );
return \ $tmpl -> output;
}