The HTTP 301 status code makes no sense at all in this case because you are performing a redirection based on client settings and preferences.
How would the crawler know which is the right environment?
Take the following screnario
client A connects to /signup with preferences X
=> 301 to /en/signup
client B connects to /signup with preferences Y
=> 301 to /it/signup
client C connects to /signup with preferences X
=> 301 to /en/signup
Which would be the winner? Nobody.
A 301 makes sense only when an URI uniquely and permanently redirects to an other location.
Additionally, trying such kind of optimization for a signup page IMHO seems to be a little insane. Many SEOs are used to exclude the signup page and similar pages via nofollow attribute.