Form incorrectly displays differently depending on logged in user's role
Your code isn't manipulating the select field's options ($form['field_topic']['#options']), so the difference in options is something outside your code (you can confirm this by commenting out your form manipulation code). 

If this is the case, you'll have to investigate why non-admin auth users are seeing empty options; it seems like it would have something to do with user permissions on your taxonomy, field, or something else that would prevent auth users from querying the valid terms for your taxonomy field.