Why does a helium balloon rise?

The buoyant force* depends on the volume of the object (or at least the volume of the object submerged in the fluid) and the density of the fluid that object is in, not necessarily/directly on the density of the object. Indeed, you will usually see the buoyant force written as $$F_B=\rho_{\text{fluid}}V_{\text{sub}}g=w_{\text{disp}}$$ which just shows that the buoyant force is equal to the weight of the displaced fluid.

We usually talk about more dense objects sinking and less dense objects floating because for homogeneous objects of mass $m$ we can write the volume as $V=m/\rho$, so that when we compare the buoyant force to the object's weight (for example, wanting the object to float) we get $$m_{\text{obj}}g<F_B=\frac{\rho_{\text{fluid}}m_{\text{obj}}g}{\rho_{\text{obj}}}$$ i.e. $$\rho_{\text{obj}}<\rho_{\text{fluid}}$$ This is what we are familiar with, but keep in mind that this emerges from the buoyant force's dependency on the object's volume (not density) after we assumed that we had a homogeneous object.

If our object is not homogeneous (like the balloon), then you have to be more careful. You do not just "plug in" the density of the rubber, since it is not purely the volume of the rubber material that is displacing the surrounding air. You have to differentiate between the entire balloon and the rubber material. So, the buoyant force would be given by $$F_B=\rho_{\text{fluid}}V_{\text{balloon}}g$$ whereas the weight is given by $$w_{\text{balloon}}=(m_{\text{rubber}}+m_{\text{He}})g=(\rho_{\text{rubber}}V_{\text{rubber}}+\rho_{\text{He}}V_{\text{He}})g$$ So, if we want floating, we want $$w_{\text{balloon}}<F_B$$ $$(\rho_{\text{rubber}}V_{\text{rubber}}+\rho_{\text{He}}V_{\text{He}})g<\rho_{\text{fluid}}V_{\text{balloon}}g$$ i.e. $$\frac{\rho_{\text{rubber}}V_{\text{rubber}}+\rho_{\text{He}}V_{\text{He}}}{V_{\text{balloon}}}<\rho_{\text{fluid}}$$ We end up with something a little more complicated, but if we treat the balloon as a single object then we get a similar result to the homogeneous case. Just define the density of the balloon as


and so we end up with


It should be noted that it's not just the fact that helium is in the balloon that causes it to rise then. You still need the volume of the balloon to be large enough to displace enough of the surrounding air. However, helium is used because it's density is so low that as we add more helium to make the balloon (buoyant force) larger, we are not making the balloon weigh too much more such that the buoyant force can eventually overcome the balloon's weight.

To qualitatively summarize this, the density of the object only matters when we look at the object's weight. The volume of the object (more specifically, the volume the object takes up in the fluid) is what matters for the buoyant force. The relation of these two forces is what determines if something sinks or floats. If your object isn't homogeneous then you should look at the overall density of the object which is the total mass of the object divided by the volume the object takes up in the fluid.

* If you want to know about where the buoyant force comes from, then Accumulation's answer is a great explanation. I did not address it here, because your question is not asking about where the buoyant force comes from. It seems like you are just interested in how comparisons of densities can determine whether something floats or sinks, so my answer focuses on this.

The high-level explanation is "buoyancy". If you want to know the actual mechanism, it's that the pressure in a fluid increases with depth: the air pressure at the top of a balloon is slightly lower than the air pressure at the bottom of the balloon. If for each point on the surface of the balloon, you take the air pressure as a vector perpendicular to the surface of the balloon, and integrate all of those vectors over the whole surface area of the balloon, you'll find that there's a net upwards force. And with some multi-dimensional calculus, it can be proven that this force always works out to be the volume of the balloon times the density of the air, i.e. the weight of the displaced fluid. It's this force integrated over the surface of the object that gives rise to what we know as "buoyancy".

If the buoyant force is greater than the weight of the object, then the object has a net upwards force. And "the buoyant force is greater than the weight of the object" is equivalent to "the object is less dense than the surrounding fluid".

An empty ballon with no air in it falls

If you have a balloon of the same volume as the helium balloon, but with no air in it, then it will float. What you probably mean is "if you have a deflated balloon, it falls". Putting helium in a balloon per se doesn't make the balloon float; rather, the helium provides a force to push the sides of the balloon away from each other, which causes it to inflate. When the balloon inflates, its volume increases. And it is this increased volume that causes the buoyancy. More volume -> more air displaced -> more buoyancy. If you could get a balloon to stay inflated without anything inside it, it would rise even faster than a balloon of the same volume with helium in it.

For a helium balloon to rise, the total weight of all the air displaced must be greater than the weight of the balloon plus the weight of the helium inside it. When the balloon is filled with helium, it's not the density of the rubber/latex by itself that matters, what matters is the density of the balloon+helium. In other words, the weight of the rubber/latex plus the weight of the helium inside, divided by the volume that the balloon is taking up. The more volume you can get the balloon to take up, the lower the total density. That's how hot air balloons work: when you heat up air, its volume increases, so its density decreases.

The balloon rises because of buoyancy. The force (weight) of the helium plus the latex/rubber downward is less than the buoyant force of the volume of air displaced by the balloon acting upward.

This means the weight of the balloon material was not great enough to cause the balloon to sink in the air.

Hope this helps.