It breaks a fundamental assumption, which is that indent depth strictly reflects code nesting depth.
If you're going to do that, the "correct" way would be to indent each parameter with tabs to the same depth as the function declaration, and then use spaces to take up the rest of the space (i.e. the width of the function declaration). Which is admittedly ugly - but it's ugly because it reflects the ugliness of misusing indentation for alignment. It's slightly less ugly if you use an editor that displays tabs and spaces differently - Kate/Kdevelop use a nice discreet » character for each level of indentation:
def hello_spam():
» while True:
» » print ("Hello",
» » "World")
The last line is visually aligned, but the semantic depth is the same.
I'd go with