That’s not entirely true either. Aggregate functions aside, NULL can negatively affect performance in other ways.
First, use of the IS NULL clause in your WHERE clause means that an index cannot be used for the query, and a table scan will be performed. This can greatly reduce performance.
Second, in some cases, JOIN performance can be dramatically affected by NULLS. (see: https://sqlperformance.com/2015/11/sql-plan/hash-joins-on-nullable-columns).
Third, all things being equal, INNER JOINS are faster than OUTER JOINS. If you know all of your concept_id fields have a value, you can use inner joins. If concept_id fields can have NULLs, you must use outer joins. Considering the number of concept_id fields which must be joined back to the Concept table, that can be a huge performance issue.
However, I agree that performance is not the major issue. The main reason to not have nulls is because it is more accurate and less prone to error.
Given the third point above, if your concept_id field does not have nulls, it is immaterial whether you use an inner join or an outer join. The result will be the same. However, if you have nulls in a join field, inner and outer joins will return different results.
Similarly, a nullable field in a WHERE clause can return different result whether or not you use ISNULL or COALESCE functions.
Because NULL means “Unknown”, its use adds a level of uncertainty which the explicit use of zero eliminates.