In opencart 2.x by default you have the option to add new fields in the customer registration form that will display in the account registration page and on the checkout registration page (even at guest checkout).
To insert a new customer custom field in admin navigate to Sale > Customers > Custom Fields.
Click on the add new button and a form like the one bellow will appear:
The first entry is the name of the field as it will appear on the registration form.
Next is location , if you select "account" the field will display in the account section (where the name and password fields are) and if you select "address" the new field will display in the address section.
Then you have type, there are 4 major types with subdivisions. Choose (checkbox, radio and select dropdown), Input (text - one line and textarea), File upload and Date (time, date and datetime).
When you select one of the 'choose' options (checkbox, radio or select dropdown) below this form a Custom field value form will appear. Click the add new button to create multiple values from which the user will be able to select (or pick multiple in the checkbox case).
In the next 2 rows you have to select customer groups, First select the customer groups that will have this field available at registration and then choose the customer groups that must complete this field in order to be able to create the account.
Then its the status and lastly the sort order. Here, when you input sort order take into account the default fields that appear allready on the registration page.
After you save, the new field will become available in the registration and guest checkout forms in front-end.