The question mark is for conditional assessment. When the macro is not rpm, the default tag macro remains the default. ?tells rpm to delete the macro tag if there is no value and replace the macro value if it is:
$ rpm -E 'foo:%{foo}'$'\n''bar:%{?bar}'
foo:%{foo}
bar:
$ rpm -D'foo foov' -E 'foo:%{foo}'$'\n''bar:%{?bar}'
foo:foov
bar:
$ rpm -D'foo foov' -D'bar barv' -E 'foo:%{foo}'$'\n''bar:%{?bar}'
foo:foov
bar:barv
, RahulKrishnanRA, %{?dist} , (rh, el5, rf ..), , , .
, , , . http://www.rpm.org/wiki/PackagerDocs/ConditionalBuilds .