Se utilizan en diferentes lugares. group by modifica toda la consulta, como:
select customerId, count(*) as orderCount
from Orders
group by customerId
Pero partition by solo funciona en una función de ventana, como row_number :
select row_number() over (partition by customerId order by orderId)
as OrderNumberForThisCustomer
from Orders
Un group by normalmente reduce el número de filas devueltas enrollándolas y calculando promedios o sumas para cada fila. partition by no afecta el número de filas devueltas, pero cambia la forma en que se calcula el resultado de una función de ventana.