Thanks Hodgman for the article. I have seen fixed time step method used in the Minecraft server code when I created mods for my home server. However, I have not used this method in my current project. Although, while debugging, I have set my time delta to 1.0 to check consistency between devices.
It turns out this was causing different values:
double mag = Math.sqrt(Math.pow(this.x, 2) + Math.pow(this.y, 2) + Math.pow(this.z, 2));
I have changed it to this and everything became consistent and my ball collides on both devices:
double mag = Math.sqrt((this.x*this.x) + (this.y*this.y) + (this.z*this.z));
Why is this?