La select resultante es un poco enrevesada, si bien se podría simplificar haciendo tres consultas diferentes, con algo así funciona: (creo, sobretodo depende de que versión de access estés utilizando)
SELECT NOTAS.COD_CLIENT, Count(NOTAS.materia) AS NOTAS, First(PAGOS.Pagos) AS Pagos
FROM NOTAS LEFT JOIN (SELECT CUOTAS.COD_CLIENT, Count(CUOTAS.COD_CLIENT) AS Pagos
FROM CUOTAS
WHERE (((CUOTAS.Tipo)="REC"))
GROUP BY CUOTAS.COD_CLIENT) AS PAGOS ON NOTAS.COD_CLIENT = PAGOS.COD_CLIENT
GROUP BY NOTAS.COD_CLIENT
HAVING (((Count(NOTAS.materia))<>First([Pagos])));
Pero si quieres hacerlo más sencillo, primero haz una consulta con el total de asignaturas por alumno, llamémosla MATERIAS
SELECT NOTAS.COD_CLIENT, Count(NOTAS.materia) AS NOTAS
FROM NOTAS GROUP BY NOTAS.COD_CLIENT;
Haz otra consulta para el total de pagos realizados, llamémosla PAGOS
SELECT CUOTAS.COD_CLIENT, Count(CUOTAS.COD_CLIENT) AS Pagos
FROM CUOTAS
WHERE (((CUOTAS.Tipo)="REC"))
GROUP BY CUOTAS.COD_CLIENT;
Y finalmente la que te devuelva la información que pides
SELECT MATERIAS.COD_CLIENT, MATERIAS.NOTAS, PAGOS.Pagos
FROM MATERIAS LEFT JOIN PAGOS ON MATERIAS.COD_CLIENT = PAGOS.COD_CLIENT
WHERE (((MATERIAS.NOTAS)<>[Pagos]));
Con esto te debería valer...
Un saludo