How are "Billing" location and "Is billing address" automatically set by CiviCRM?
I am not sure if this answers your question, but if you do not have an added profile type to collect a mailing address, the CiviContribute form will automatically only provide a place to check or enter billing address only. If you add a profile type that collects their mailing address also, then CiviCRM will ask on the front-facing form via checkbox if the billing address is different. 

If you do not add a mailing address profile, CiviCRM will record the provided address as a billing address. If you do provide the mailing address profile, then CiviCRM will populate both fields according to what the user entered for mailing and billing.

Also, without the added profile to collect a mailing address, the CiviCRM will automatically populate the billing address field with whatever address it knows from the contact record, which may have been entered on the back end or from when the user registered for an account on your website.

When you set up the CiviContribute form on the back end, you will see a tab for "profiles" in which you can add or create a profile such as this.