1. Create a generic Custom Field Renderer Snippet called something like "RemoveRequired" on these fields whose only purpose is to remove the .required class from the Field's elements. Here's what this Snippet would look like:

NOTE: I just modified the snippet, turns out that the required class is currently to the field element ﻿after﻿ the renderer is run, making it impossible to remove this class without using waiting until the next pass of the event loop with setTimeout(), but this approach will work consistently.

Ugh, that's true, for Reference fields that you want to be picklists you'd have to have a separate snippet called "ReferenceFieldAsPicklist_RemoveRequired" or something like that, which would look like this:

You have to declare REFPICK so that the Reference field renders as a Picklist, then you have to reset it to CUSTOM so that your custom renderer will be run the next time, rather than the regular Reference-Picklist renderer. If you don't reset it, your Required styling will "come back" the next time you go into Edit mode.