Disclaimer: I don't do PICs in any of their incarnations.
Still this can be addressed from quite general C principles.
Until C11 standard, whether a variable is accessed atomically is defined by the implementation and the HW platform.
In this case, though, being it a single byte, I'm hard pressed to see how it could not be an atomic access, unless PICs are
very strange.
This means the the di() ei() couple should not be necessary.
With atomicity out of the way, let's consider the volatile qualifier: its function is to inform the compiler that the variable can be modified in ways it does not know, from C99:
An object that has volatile-qualified type may be modified in ways unknown to the implementation or have other unknown side effects.
If volatile is removed, the compiler could decide that (since the value is never changed in the main function as far as it can see) it does not need to re-read from storage every time, and omit the copy to Test_Command altogether.
So, di()/ei() is not really needed, while volatile is.