Well, I am not sure that the status is not correctly communicated in (0000,0900) since the most interesting part of the dcmtk output is omitted. Try to use -ll TRACE option for the movescu and look for "DIMSE Command Received:". Then you can see the original dataset sent by the C-MOVE SCP. It should read somehow like this:
T: DIMSE Command Received:
T:
T: # Dicom-Data-Set
T: # Used TransferSyntax: Little Endian Implicit
T: (0000,0002) UI =MOVEPatientRootQueryRetrieveInformationModel # 28, 1 AffectedSOPClassUID
T: (0000,0100) US 32801 # 2, 1 CommandField
T: (0000,0120) US 1 # 2, 1 MessageIDBeingRespondedTo
T: (0000,0800) US 0 # 2, 1 CommandDataSetType
T: (0000,0900) US 43009 # 2, 1 Status
T: (0000,1021) US 0 # 2, 1 NumberOfCompletedSuboperations
T: (0000,1022) US 3 # 2, 1 NumberOfFailedSuboperations
But since the valid status 0xa702 is correctly reported in the screenshot you posted, I strongly suspect it is present in the MOVE-SCP's response.
However, you are correct that the attribte (0000,0902) is not allowed for that particular status code. See PS3.4, Table C.4-2. The status must always be present. Depending on the status code, additional attributes may be used to convey additional information about the status (e.g. why the operation failed or which objects were affected). The table referenced above lists which additional attributes are allowed for which status.