Certo. Innanzitutto, tecnicamente, non c'è nulla che vieta di passare dei parametri in query string alla stessa pagina.
codice:<error-page> <error-code>404</error-code> <location>/WEB-INF/http-error.jsp?code=404</location> </error-page> <error-page> <error-code>403</error-code> <location>/WEB-INF/http-error.jsp?code=403</location> </error-page> ....
E poi nella http-error.jsp esaminare il parametro passato.
Se si vuole farlo, è lecito. Ma di per sé non serve. Le specifiche delle Servlet sono così "buone" che hanno considerato questi scenari. Quando a fronte di un <error-page> viene fatta la richiesta interna alla risorsa indicata in <location> (che potrebbe essere una jsp o una Servlet), la risorsa riceve una serie di "attributi" nel request scope speciali. Uno di questi ha la chiave "javax.servlet.error.status_code" ed è un Integer che rappresenta lo status code.
Ma ce ne sono anche altri, basta documentarsi sulle specifiche ufficiali o altrove.
Un conto sono gli errori a livello HTTP (causati da richieste errate del client o errori interni al server). Un altro conto sono le eccezioni scatenate da qualche parte all'interno del codice della applicazione.