i've tried using just hostgroups and it works.
i still don't like the design of the service system. you should be able to define a service and then have mutations of it using templates. then inside the hosts definition you should have a comma delimited list after a variable like services_used.
i guess one way you're listing servers over and over inside the services definition (or us hostgroups), then there is the way i wish it was done; list services over and over inside host definitions.
however in large networks you will probably have more hosts than services, and the services would be easier to remember.