After a time I think, the Create Site Collection using CSOM for SharePoint 2019 On-Premise can answer my question.
There must be added the TenantAdmin ServerStub to ClientCallableProxyLibrary for web application in order sucesfully create sites via CSOM.
The script for the SP2019/SP2016 allowtenantapiv16.ps1 could be found at https://github.com/SharePoint/sp-admin-scripts/tree/master/Scripts/SharePoint.SiteColProvisioning.Configuration
I still don't know it is the best approach. Using the CSOM and Tenant object, the both tenant.CreateSite(), tenant.CreateSiteCollection() worked. The 2nd one seemed to be faster.
using (var ctxTenant = authMananger.GetNetworkCredentialAuthenticatedContext(tenantUrl, user, pw, domain))
{
var tenant = new Tenant(ctxTenant);
//SiteCreationProperties props = new SiteCreationProperties()
//{
// Title = wi.Title,
// //Url = wi.TargetUrl,
// Url = "http://myserver/sites/Test1",
// Lcid = 1033,
// Template = "STS#3",
// Owner = domainUser
//};
//tenant.CreateSite(props);
//ctxTenant.ExecuteQuery();
SiteEntity siteEntity = new SiteEntity()
{
Title = wi.Title,
Url = siteUrl,
Description = wi.Description,
Lcid = 1033,
Template = "STS#3",
SiteOwnerLogin = domainUser
};
tenant.CreateSiteCollection(siteEntity);
There is still one small inconvenience - the created site shows on its home page in the right upper corner the "0#.w|< domainUser >" instead of the user name - mightbe because a missing parameter.