What is the proper way to create a custom user field programatically?
Q1: The field should be added in hook_enable() and removed in hook_disable() if you want the field to be removed and then added when you enable/disable the module. However I suggest implementing it in hook_install() and hook_uninstall as that will only remove the field and its data from the user entity when the module is uninstalled as oppose to simply disabled. hook_field_schema is not for these kinds of tasks as it's for defining a database table.

Q2: You'd have to hack your way through the field.module to make these database table name changes. This is really bad practice (VERY VERY) and plus I don't see the point of this, or never even heard anyone attempting this. The database tables are for Drupal and not for human eyes. As such they're in a consistent and systematic naming conventions so the field module as well as other modules that use them can easily extract data.