Whilst it is true that the exam class does not provide this functionality it is rarely true that it is not possible to do something in LaTeX. The question is more how hard it is to do what you want and in this instance it is not very difficult.
One way to add marks for the \part
's to the grade table is to redefine the \part
command so that it extracts the points for each part. This is slightly tricky to do as the \part
command is actually (re)defined by the parts
environment. Once you figure out what to do, however, you can construct the grade table on the fly using the marks for each part so that the MWE above produces:

Note that I have fallen prey to my own preferences and used booktabs to create the new grade table, which is produced by the \GradeTable
command. The code below may break some other features of the exam package. For example, I noticed from exam.cls
that "bonus marks" are supported in some fashion but I do not know what they are, how they work, or if my code is compatible with them. As far as I can see, however, my code should not break anything. On the other hand, the \GradeTable
command does not support the full functionality of the \gradetable
command. For example, it is not possible list marks by page numbers etc.
\documentclass[addpoints]{exam}
\usepackage{xparse,booktabs,xpatch}
% redefine \part command to be \mypart
\appto\parts{\let\exampart\part\let\part\mypart}
\makeatletter
\ExplSyntaxOn
\tl_new:N \g_grade_table_tl% this will; become the new grade table
\int_new:N \g_score_int% this will be the exam score
\NewDocumentCommand\mypart{o}{
\IfNoValueTF{#1}{\exampart}{
% don't do anything special inside solutions
\if@insolution\exampart[#1]
\else\exampart[#1]
\int_compare:nNnT {\arabic{partno}} = {1} {
\tl_gput_right:Nn \g_grade_table_tl { \midrule }
}
\tl_gput_right:Nx \g_grade_table_tl {
\arabic{question}\alph{partno}
}
\tl_gput_right:No \g_grade_table_tl {& #1 & \\}
\int_gadd:Nn \g_score_int {#1}
\fi
}
}
\NewDocumentCommand\GradeTable{}{% the new grade table
\begin{tabular}{ccc}\toprule Question & Points & Score \\
\tl_use:N \g_grade_table_tl \midrule
Total & \int_use:N \g_score_int & \\\bottomrule
\end{tabular}
}
\ExplSyntaxOff
\makeatother
\begin{document}
\begin{questions}
\question
What if there were no air?
\begin{parts}
\part[4]
Describe the effect on the balloon industry.
\part[6]
Describe the effect on the aircraft industry.
\end{parts}
\question
\begin{parts}
\part[12]
Define the universe.
Give three examples.
\part[8]
If the universe were to end, how would you know?
\end{parts}
\end{questions}
\GradeTable
\end{document}