The main difference is that XNOR-Net uses 1 bit quantized weights and XNOR+popcount to approximate the dot product of convolution, which can be implemented very efficiently by using 64-bit arithmetic instructions on a CPU to operate over 64 1-bit components in parallel. [1]
TensorFlow's optimization is also using discretized weights, but AFAIK targeted at 8-bit quantized weights. [2]
[0] https://github.com/tensorflow/tensorflow/issues/1592
[1] https://arxiv.org/pdf/1603.05279v4.pdf
[2] https://petewarden.com/2015/05/23/why-are-eight-bits-enough-...
Cursory look suggests they quantize both the weights and functions during classification on the smart phone and during the forwards and backwards pass during training. But you still have to use a continuous version of your logic gate to get an error gradient during training, so I'm guessing they still do the training on "supercomputers" (a desktop with a gpu really).
Example: https://www.tensorflow.org/mobile/