3dsmax hace 1 paso extra en la creación de sus primitivas calculando la matriz de transformación en el momento de la creación, las 2 formas son válidas y útiles según cada caso, no sé si la decisión de no incluir esa opción por defecto se deba a que una forma sea mejor que la otra, este tipo de cosas pasa más por gustos personales que otra cosa.
De todas formas implementar la creación de primitivas "dibujando" en el viewport es algo relativamente simple de hacer via scripting (dentro de lo que permite el SDK).
Por ejemplo:
import win32com
xsi = win32com.client.Dispatch("XSI.Application").Application
def createSphere(name="TheSphere"):
pickPos = xsi.PickPosition( "Position", "")
pickRadius = xsi.PickPosition( "Radius", "")
radius = XSIMath.createVector3()
radius.Set(pickRadius[1]-pickPos[1], pickRadius[2]-pickPos[2], pickRadius[3]-pickPos[3])
radius = radius.Length()
sph = xsi.ActiveSceneRoot.AddGeometry("Sphere", "MeshSurface", name)
sph.Kinematics.Local.PosX.value = pickPos[1]
sph.Kinematics.Local.PosY.value = pickPos[2]
sph.Kinematics.Local.PosZ.value = pickPos[3]
sph.Radius.Value = radius
createSphere("El_nombre")