SQL Server: sp_describe_first_result_set with more than one select in a stored procedure
That behavior is expected and is described on the sp_describe_first_result_set doc under the Remarks section:

For each control flow path, the first statement (if any) that returns
a result set is determined by sp_describe_first_result_set. 
When multiple possible first statements are found in a batch, their
results can differ in number of columns, column name, nullability, and
data type. How these differences are handled is described in more
detail here:
[...]

If the data type differs, an error will be thrown and no result is    returned except for the following cases:

varchar(a) to varchar(a') where a' &gt; a.

varchar(a) to varchar(max)

nvarchar(a) to nvarchar(a') where a' &gt; a.

nvarchar(a) to nvarchar(max)

varbinary(a) to varbinary(a') where a' &gt; a.

varbinary(a) to varbinary(max)





The doc has an example where an Error because the data types differ happens, like in your case.