This answer is purely my personal opinion. There may be a better technical reason I'm not aware of.
How about both? The great backref
feature will keep the database in sync for you:
class DepartmentService(object):
def get_groups_by_department(self, dept_id):
...
def add_group_to_department(self, dept_id, group):
...
class GroupService(object):
def get_department(self, dept_id):
...
def add_to_department(self, dept_id, group):
...
If I had to choose one, I'd put it in GroupService
, mainly because the wording of the functions are more natural, which usually means a better fit ;-)