Getting the "Column name or number of supplied values does not match table definition" when I use CTEs in an IF statement inside a stored procedure
This error message is generally associated with an insert, which you don't have in your sample code.  Assuming this is representative of your proc, I would guess you are using an INSERT INTO ... EXEC with the proc.  Since that take the first results set, it would mean that this supplants another result set that is returned when @Load = 0.
Under that assumption, since one works, and the other does not, it would also mean those have different columns.  If it was your intent to have this result set replace the other, then the solution is to make the columns of the conditional query match those of the second.
Otherwise, your code is not representative of the problem you are encountering.