Just to give a reason for why this happens (without commenting on if this is a bug or by design).
julia> typeof(promote(π, ℯ))
Tuple{Float64,Float64}
julia> typeof(promote(π, π))
Tuple{Irrational{:π},Irrational{:π}}
So in the first case we will call the mod function with the irrationals converted to floats, but not in the second.