The error list might give you what you need:
You could open
View --> Error List in ssms
To get all the build + intelliSense errors:
Differences between error list & the messages tab on query execution:
The Error List contains all syntax and semantic errors found by
IntelliSense in the Database Engine Editor. This list of errors is
dynamically updated as you edit Transact-SQL scripts. The list
includes all errors that the editor has found in each Transact-SQL
script. The editor does not stop parsing a file after encountering
errors in a script. In SQL Server 2008, IntelliSense in the Database
Engine Editor does not support all Transact-SQL syntax elements. The
Error List contains only errors from the Transact-SQL syntax that is
supported by IntelliSense.
The Messages tab at the bottom of the Database Engine Query Editor
window displays all errors and messages that are returned by the SQL
Server Database Engine when a Transact-SQL script is executed. This
list does not change until you execute the script again. The Database
Engine stops parsing a batch after it finds one or two compile errors;
therefore, the Messages tab might not list all errors in a script.
So to answer the question:
Is it possible to get SQL Server to report all the missing variables
at once, or is this just how the query parser works?
Using general query excecution this is not possible as the parsing stops after one or two compile errors, but you could use the error list.