So, after consulting with MathWorks (thank you!) it appears that this is a known problem in working with ActiveX webBrowser components (and not just in Matlab). Currently, there is no native Matlab solution. However, Yair Altman's ever-helpful Undocumented Matlab site provides a workaround using Java.
While this overcomes the tab key limitations, my hang-up in using this solution has been my own ignorance in accessing web components (e.g., a text box, etc.) via code. But, as long as one is using R2015a or later, it turns out that this is relatively straight-forward:
% Create figure
fig = figure('Pos', [0 0 1280 1024], 'Name', 'Browser Test', 'Units', 'norm', 'Menu', 'none');
movegui(fig, 'center');
% Add Browser object
jObject = com.mathworks.mlwidgets.html.HTMLBrowserPanel;
[browserPanel, container] = javacomponent(jObject, [], fig);
set(container, 'Units', 'norm', 'Pos', [0,0,1,1]);
% Navigate to a URL
browserPanel.setCurrentLocation('https://www.mathworks.com/login');
% Get JxBrowser BrowserView and Browser objects
if verLessThan('matlab', '8.6')
error('JxBrowser BrowserView is not available in MATLAB R2015a or earlier');
elseif verLessThan('matlab', '9.1')
browserView = browserPanel.getComponent(0).getComponent(0).getComponent(0).getComponent(0);
else
browserView = browserPanel.getComponent(0).getComponent(0).getComponent(0);
end
browser = browserView.getBrowser();
% Wait until browser finishes loading
while browser.isLoading
pause(0.1);
end
% The login form is in a frame on this page. The frame id with the login form is 4
frameDocument = browser.getDocument(4);
% Example: Get the "userId" field and fill it with the text "testId"
userId = [];
while isempty(userId)
% It is possible that the content of the embedded frame has not
% finished loading yet. This loop will ensure that we wait until it
% finishes loading the userId field.
userId = frameDocument.findElement(com.teamdev.jxbrowser.chromium.dom.By.id('userId'));
pause(0.1);
end
userId.setValue('testId');
% Example: Get submit button and click it
submit = frameDocument.findElement(com.teamdev.jxbrowser.chromium.dom.By.id('submit'));
%submit.click(); % commented out because this is not a valid login
(This isn't my genius; I credit the MathWorks support team for helping to point me on the right path...)