Two different frames may always calculate what may have been simultaneous in each others frames, but if they are in relative motion events which are simultaneous (whether calculated or directly experienced simultaneously) for one can't be simultaneous for the other.
In the famous train-embankment thought experiment, the observers are positioned in the exact middle of what they each consider the sources of the flashes of light, but that's really just to make it "easy" to understand what is simultaneous (or not) for each of them.
Say there are two observers on the embankment, one in the exact middle of the sources (according to them) of the two flashes, and one who is positioned one third of the distance between the two sources. If those two observers are at rest with each other, they can agree on clocks, and both can agree on what the clocks at the sources of the flashes would say. If we assume the flashes were simultaneous in the frame of the embankment, the observer in the exact middle will
see the flashes at the same time. The observer at one third will see one flash in half the time it takes for the other flash to arrive; but
both will know that the flashes occured at the same time - in their frame.
(Simultaenity isn't about when we see events. If your camera flash goes off at the same time as you see a flash from a lightening strike on a distant hill; you consider that you
saw the flashes simultaneously, but you wouldn't (normally) consider the lightening strike itself to have occured at the same time as you took the picture.)
You might argue then that the train observer should be equivalent to an embankment observer who isn't standing in the exact middle of the strikes, and who could calculate that the flashes were generated simultaneously
in their frame too - but that would ignore that in their frame they
do consider (in the usual set-up) that they were in the middle of the two strikes, so should see them at the same time. (Or translate this to any other position on the train, e.g. that one third position).
Code:
A, B = strikes according to N, observer on train.
C, D = strikes according to M, O observers on embankment
====[A N B]=====
------------------------
C M O D
Later (train moved to the right):
======[A N B]===
------------------------
C M O D
N might be next to O when the light from the leading strike hits N, but this light according to them came from B, whereas for O it came from D. So while O might see the light from D before the light from C, he or she will still calculate that C and D occured at the same time (
if they did) just as M would if the flashes hit him or her at the same time; but - N can't get that same result
in their frame. (Remember N can validly consider themselves as at rest, sitting still exactly in the middle (in this set up) of A and B).