Kentico Support was able to assist -
When you get a document by its Node Alias Path, as in the first example you shared, the macro engine can automatically resolve the type of the page, and include pagetype-specific (coupled) data, because there's only one page to worry about. When you're using the full Documents set, however, it contains all of the documents, spanning several types, so by default it does not include the coupled data. You can work around this by calling the .WithAllData extension. However, there's a drawback to that— if you're resolving all of the documents this way, before looping through them, for every single item in the content table, it will be pretty slow and take a lot of resources.
I'd recommend filtering the Documents call beforehand, with the Where extension method. It should look something like this:
Documents.Where("NodeSKUID = " + item.SKUID).WithAllData.FirstItem.VideoURL
The Where method tells the macro engine to only pull the data of documents that meet that condition. The WithAllData extension tells it to pull pagetype-specific data as well as generic document data. The FirstItem extension tells it to pick the first one, in case multiple documents are associated with the same SKU.
This also allows you to avoid the nested for loop.
If you want to access multiple properties without resolving the document each time, you can set it to a variable before accessing VideoUrl.
e.g. {%myDoc = Documents.Where("NodeSKUID = " + item.SKUID).WithAllData.FirstItem %}
then later {%myDoc.VideoURL%}