It is a problem.
Here in Charlotte we had that same issue with some of the public housing. You live in public housing and get promoted to more hours, pay/position where you work and that extra $100 a month means you lose the roof over your head and now have to pay $400 a month for a shitty apartment. Apparently, that issue was resolved and the rules changed to allow for growth in income over time before they increased your rent or they booted you for exceeding the "poverty" level for those units... So that is good news.
So what would any reasonable person do who is at a grade school level with their math? Work less hours or turn down the promotion if it meant making more was going to cost them more.
If we are attempting to pay people in menial jobs more so that they don't collect gov't benefits (ending corp welfare via welfare) then we need to over haul the social benefits these people receive to reflect this effort. Allow them to grow into supporting themselves at the newly mandated wages and find a wage to not penalize them for the extra wage, but also still retract those benefits appropriately over time.
I think the answer is clear.
Put a time limit on all these benefits. From the moment you start welfare or housing you are stamped with a date on your forehead saying "This shit will be taken away from you on X Date". You won't forget that date. You will not decline a promotion. You will not turn down more offers. You will not turn down working more hours.
Because you know, regardless of how shitty of a position you are, you are totally going to be screwed if you don't try hard to help dig yourself out by X date.
If there is no ending date and it's only based on how much you CHOOSE to work...... why try? Sorry, humans simply lack motivation unless there is a mouth coming to bite them in the ass if they don't get to work.