I mean, if
B_public_key = A_public_key + B_secret * G
B_secret = ( B_public_key - A_public_key ) / G
Or isn't it possible to do the second math?
Most system use hashing.
The Armory system is that you work out a multiplier based on the chaincode and the current public key.
Multiplier(n) = ChainCode XOR Hash256(PubKey(n))
Public Key(n+1) = multiplier(n) * public key(n)
Private Key(n+1) = multiplier(n) * private key(n)
So, if you have the nth private key, you can work out the nth multiplier and then compute the (n+1)th key pair and by iterating, you get all the later pairs.
It doesn't let you work out the keys from before n (since that would require reversing the hash function).
You need the chain code, which isn't suppose to be public info.
Under your scheme, the private keys are directly generated by the server, so that is the worse than just having the chain code and root public key on the server.
An attacker with public key(0) and the chain-code can obtain all private keys after the first private key they obtain.
If someone hacks a server using your system, they get all the private keys.