Following Algohi's example it seems this is another problem with the underdeveloped TypeSystem functionality behind Dataset. Look at the difference in these input forms:
Transpose @ Dataset[<|"a" -> #, "b" -> (1/#)|> & /@ Range[5]]
% // InputForm

Dataset[<|"a" -> {1, 2, 3, 4, 5},
"b" -> {1, 1/2, 1/3, 1/4, 1/5}|>,
TypeSystem`Struct[{"a", "b"},
{TypeSystem`Vector[TypeSystem`Atom[Integer], 5],
TypeSystem`Vector[TypeSystem`Atom[Rational],
5]}], <|"Origin" -> HoldComplete[
AssociationTranspose, Dataset`DatasetHandle[
261189890384722]]|>]
Note specifically TypeSystem`Vector[TypeSystem`Atom[Rational], 5].
Now the malformed case that does not transpose:
Dataset[<|"a" -> Range[5], "b" -> (1/Range[5])|>]
% // InputForm

Dataset[<|"a" -> {1, 2, 3, 4, 5},
"b" -> {1, 1/2, 1/3, 1/4, 1/5}|>,
TypeSystem`Struct[{"a", "b"},
{TypeSystem`Vector[TypeSystem`Atom[Integer], 5],
TypeSystem`Tuple[{TypeSystem`Atom[Integer],
TypeSystem`Atom[Rational], TypeSystem`Atom[
Rational], TypeSystem`Atom[Rational],
TypeSystem`Atom[Rational]}]}],
<|"ID" -> 141042475246422|>]
Stefan R notes that there is a bug in the display of this form, and also in the way Transpose is handled by Dataset, but the two are unrelated. Contrary to my earlier assertion the type system behavior is not at fault. See the comments below for more.
<|"a" -> Range[5], "b" -> (1/Range[5])|> // Datasetdoesn't format as I would expect; note the{ }in the output rather than discrete columns. – Mr.Wizard May 27 '15 at 22:46Transpose, but inDataset, which should figure out the right then to do here. Also note that<|"a" -> Range[5], "b" -> (1/Range[5])|> // Transposedoesn't work (and for most cases ifop@datadoesn't work then neither doesop@Dataset@data). – Stefan R May 28 '15 at 18:53