It has nothing to do with the blocks, it's the IEC convention that has decided the approaches to coding, The idea was to bring harmony to the industry, with the possibility of making code transportable these are the reasons for a number of conventions i.e. FC's FB's, local variables, symbolic addressing rather than actual physical & of course ST.
However, there are differences like some special cards that need in-built function blocks that will only work on that hardware. However, many special add on cards are now set up with utilities in the IDE so no PLC code is required to make them work, this frees up the differences between platforms to some extent.
By going to symbolic addressing means the code on one type can be compiled in another as it is the compiler that allocates the physical addresses, however, there are still some manual mods that need to be done regarding the I/O addressing for example Mitsubishi use X & Y, CLX uses I/O, and of course there are others.