Hi @Eric_Allen,
Thanks for the question!
With regards to whether or not we're planning to add support for functionality like this:
ToCommunication(Flow.IntegerVar, Format.Number.playDigits)
similar to what you can do in call flows:
ToAudioNumber(Flow.IntegerVar, Format.Number.playDigits)
the answer is yes we are working on it but I don't have a release date at this time.
Now, with that being said, we do have functionality today that might meet your need and not require a lot of substring calls. The trick is to get your number expressed as a string, split on "" and then convert the resulting string collection back to a string using " " or ", " as the delimiter.
Lets say you have the number 12345678 in a Flow.MyInteger variable. If we wanted to convert this to a communication with individual digit read back on a call, you could try this by adding an expression to a communication builder with this text:
ToCommunication(
If(IsSet(Flow.MyInteger),
ToString(Split(ToString(Flow.MyInteger), ""), " "),
""
)
)
So above we're making sure that the Flow.MyInteger isn't NOT_SET before performing operations on it and if it is we simply return a blank string for it but that expression shows how we get the number converted to a string, split on "" which will take each character from the string representation of the number and create a string collection where each item is an individual character and then use the ToString call with " " as the delimiter to join each item from the string collection back to a string. For example:
12345678 becomes "1 2 3 4 5 6 7 8"
or if you used ", " instead of " " on the ToString call:
12345678 becomes "1, 2, 3, 4, 5, 6, 7, 8"
that is converted to a Communication value with the ToCommunication call. The resulting Communication value when read back on a call would get that individual digit experience.
And yes if you had a string with spaces in it like an account number of "111 222", you can always use the Replace function to replace " " with "" prior to doing the Split / ToString call so the string submitted to the ToCommunication call becomes "1 1 1 2 2 2". Assuming Flow.AccountNumStr variable has the string "111 222" in it:
ToCommunication(
If(IsNotSetOrEmpty(Flow.AccountNumStr),
"",
ToString(Split(Replace(Flow.AccountNumStr, " ", ""), ""), " ")
)
)
And if you already had a number expressed as a string like "5950" in Flow.AccountNumStr, this would work:
ToCommunication(
If(IsNotSetOrEmpty(Flow.AccountNumStr),
"",
ToString(Split(Flow.AccountNumStr, ""), " ")
)
)
I made the expressions here multi-line to aid with readability.
Hope this helps! 
Jim