The typical interest rate parity argument goes something like this:
Let $f_0$ be the EUR(domestic)USD(foreign) exchange rate.
1) You convert it to USD $f_0$ and invest at $r$ to receive USD $(1+r\tau)f_0$ at $T$.
2) You keep EUR 1 and you can invest in at $r^*$ to receive EUR $(1+r^*\tau)$ at $T$.
The two scenarios might be assumed to be equal at $T$ implying the parity equation:
$$ f_T = \frac{1+r\tau}{1+r^*\tau}f_0\;.$$
However this does not account for market risk, nor holding assets in different currencies over the life. In the above you assume that market interest rates are statically attainable (on a forward rolling basis), and that the forward FX rate will not fluctuate and will be inline with the risk neutral price, when you need to convert your currency back in the future.
But say you receive on a EURUSD cross currency basis swap to $T$. You have just eliminated market risk, hold assets in the same currency (USD), but introduced an extra term into your parity equation.
Your scenarios typically look like this now:
1) You convert it to USD $f_0$ and invest at $r$ to receive USD $(1+r\tau)f_0$ at $T$.
2) You receive $b$ on a EURUSD XCS for T with the cashflows:
EUR USD
[initially] -1 +f_0 ---
[cash interest] +f_0 r t | (hold USD for T)
[swap interest] (r*+b) t -f_0 r t |
[final notional] +1 -f_0 <--
Which results in a net position at $T$ of EUR $1+(r^*+b)\tau$
This time both these scenarios incorporate holding a USD asset for the life $T$, except one asserts a return in USD and the other in EUR. If these are to be equated you have the parity equation:
$$ f_T = \frac{1+r\tau}{1+(r^*+b)\tau}f_0$$
Read more about constructing Multi Currency Interest Rate curves and FX Forwards in Darbyshire: Pricing and Trading Interest Rate Derivatives.