So the answer is a List.Accumulator function, I had an issue initially as I was checking the whole column but using the Record.Field fixed that issue.
DoCompare = (a, b) => if a = b then "Good" else "Bad",
Check3 = List.Accumulator(CompareList, Source,
(tbl, checkName) =>
Table.AddColumn(tbl, check name, each
DoCompare(
Record.Field(_, Text.Replace(checkName, "Check ") & "1"),
Record.Field(_, Text.Replace(checkName, "Check ") & "2")
)
)
)