> It had no XDR because it was "reader makes it right" and datatypes
> were tagged.

That's the first I've heard of that and I really like it.  Most of the
time, you are on a network of machines that are the same, so why have
a network byte order, reader makes it right will just work.  Neat.

I guess I don't quite understand that. I can get how it works for simple data types (integers, floating point numbers, perhaps strings) but it seems like it breaks

It was only for native types  https://pubs.opengroup.org/onlinepubs/9629399/chap14.htm   The other things -- struct, array, pointers, etc -- have rules.  See the link if you care for nitty-gritty details.