While I am not completely sure about your application and the process you are following, I am not sure what you describe is possible (at least not with the library functions).
Standard scaler works by subtracting the mean and dividing by std. To inverse this, you multiply by std and add mean to all samples.
This would work if you wanted to inverse the scaling of S to go back to A, but when you split it there are some problems.
Observe the following equation (m is a vector and s is a number):
If you want to find two matrices that add up to A, you multiply by s (this is the easy part) but then you have to somehow subtract m ONE time in total from TWO other matrices.
Obviously, this is not as simple as defining "the inverse scaling". It depends on how S was split into B and C in the first place. If for example B and C were equal, subtracting m/2 from both matrices should be fine. But with any other split, you would need to calculate what percentage of this -m that S has has gone into each of the two other matrices, in order to be able to reverse it properly. And if the split did not happen in such a simple way (for example, different rows of matrix S contain different percentages of C and B), then I frankly don't know how to calculate this or even if it is possible.
I am assuming that you simply called
scaler.inverse_transform to both B and C and thus ended up adding 2m to the right hand side of the above equation, leading to the wrong results.
I don't know why you have to split the data after scaling, but, depending on the way you it is not as simple to reverse this. My suggestion would be to try and scale before splitting the data parts.