I don't know about the 'best' way, but if it works for you that is a start!

Using sprintf isn't such a bad idea, as it is a pretty standard way of formatting strings, and gives you a lot of control over that formatting.
The ADC_status buffer variable can be a lot smaller if you want - it only needs to be the length of your longest string + 1 (for a null terminator character). Since the ADC value won't be larger than a 4 digit number, the array could be 5 instead of 64, but I would use 8 (but only as it is a multiple of 8, no other reason).
For floating point numbers, I do something like
dtostrf(celsius, 5, 2, tmpStr); //input variable, total number of digits to output, number of digits after decimal, output variable
Particle.publish("tempC",tmpStr,30,PRIVATE); //event name, data to publish,valid for duration,private event
For integer numbers, you can use
itoa(intVar,charVar,10); //where the 10 represents which number system, 10 being decimal numbers
Size-wise, that will make negligible difference in the case of the Oak - about 10 bytes less of memory and flash usage. For the flexibility of sprintf, I'd stick with that.
btw, you can hit the '#' button on the forum post editor to insert or format text as code so it does the monospaced front and puts a scroll window in for longer code.