So this appears to be more of a Model Builder issue than a Calculate Field issue.
In terms of Model Builder and an intermediate data source, I am guessing Model Builder isn't allowing the option because it has no idea what the schema will look like when the model is run. When you are pointing to an existing/original data set, Model Builder can lookup the schema of the data set and determine what fields do and don't exist, and hence give you the option to create a new field and set the data type. When working with intermediate data, it is derived and the schema won't be known until runtime so Model Builder isn't allowing that parameter to be set.