Phonemes are defined by their contrast with other phonemes. Since German doesn't allow /z/ and /s/ contrast in word final position, we can't claim that both phonemes exist in that position; or, in fancy words, "their distinction is underspecified in that environment". So on a phonemic level both words need to be transcribed the same, as /ra͜is/ (see note)*.
The actual difference between both words in on another level - the underlying representation of their morphemes. That difference is not visible in their imperatives...
⟨reis⟩ "travel!" is //ra͜iz// → /ra͜is/. In word final position, //z// appears as the phoneme /s/.
⟨reiß⟩ "tear!", "break!" //ra͜is// → /ra͜is/. In word final position, //s// appears as the phoneme /s/.
...but it is in their infinitives:
⟨reisen⟩ "to travel" is //ra͜iz// + //ən// = //ra͜izən// → /ra͜izən/. In intervocalic position, //z// appears as /z/.
⟨reißen⟩ "to tear", "to break" is //ra͜is// + //ən// = //ra͜isən// → /ra͜isən/. In intervocalic position, //s// appears as /s/.
So it's a bit like languages pile up abstraction over abstraction: you have the raw sounds, then the phonemes, then the underlying representation.
*NOTE: how to transcribe it might change from author to author. A few authors would use /S/, an "archiphoneme", to highlight that the distinction between /s/ or /z/ doesn't exist in that position. Other authors would simply plop /s/ (as it's closer to the raw sound) and call it a day. Either way, the important bit is: if there's no phonemic distinction, you can't transcribe both differently.