Ly / ><>, 20 19 bytes
"abc"&&ov
; oo<
Try it with ><>!
Try it with Ly!
These languages are very similar, as Ly is based off ><>. However, Ly does not have 2D execution and interprets & differently, which I took advantage of here.
Both languages will start by pushing abc to the stack.
For ><>, the & instruction moves values to and fro the register. Two in a row will push a value to the register and then take it straight back, essentially a NOP.
For Ly, & is a modifier that makes an instruction perform its function on the entire stack.
o means the same thing for both languages, but since it is modified by & in Ly, it will print the whole stack, outputting abc. In ><>, it will only output c (as it is printed from the top down)
v is a NOP in Ly, which skips it and goes straight to ;, ending execution. ><> will instead treat it as a pointer, sending the IP downwards.
It then hits another arrow, sending the IP left. Here, it meets two o signs, outputting b and a.
EDIT: Saved a byte (and fixed ><> crashing)