FWIW, I too have come to prefer the variable-based form, for readability reasons. One reason is that it is easier to quickly recognize and verify the idiom when the redundancy is in the form of two identical names close together:
svn_my_type_t *my_var; [...] foo(my_var, sizeof(*my_var)); <== 'my_var' twice than when the nearby pairing uses two different names and the repetition of the type name is widely separated: svn_my_type_t *my_var; [...] foo(my_var, sizeof(svn_my_type_t)); especially when the declaration was separate from the statement that uses it. Another reason is that the variable name is usually shorter, the entire statement often fitting on one line, whereas the type name is usually a public, user-defined type (or pointer to such) with a longer name. - Julian