Aquí les dejo una versión más corta donde se hace todo el proceso de una sola vez:
group_grades = ['Juan', 8.0, 9.0, 10.0, 'María', 9.0, 7.0, 6.0, 'José', 3.4, 7.0, 7.0, 'Claudia', 5.5, 6.6, 8.0, 'Ana', 6.0, 10.0, 9.5]
names = []
grades = []
for i in range(0, len(group_grades), 4):
names.append(group_grades[i])
grades.append(group_grades[i+1:i+4])
'''
Qué hace paso a paso:
range(0, len(group_grades), 4)
Esto crea una secuencia que va de 4 en 4. O sea: i = 0, 4, 8, 12, 16, que son los índices donde aparece cada nombre en la lista original.
En cada iteración:
group_grades[i] es un nombre, que se agrega a la lista names.
group_grades[i+1:i+4] es un slice que toma las tres notas siguientes, que se agregan como sublista a grades.
'''
names, grades