Alternative subequations numbering and references

It's possible to do it, but the name I gave to the environment should clear up my opinion about it. ;-)

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{amsmath}
\usepackage{environ}

\makeatletter
\newsavebox{\horriblesubequationsbox}
\NewEnviron{horriblesubequations}[1]{%
  \setbox\horriblesubequationsbox=\vbox{
    \hsize=\dimexpr\linewidth-8em\relax
    \begin{subequations}
    \renewcommand{\theequation}{\alph{equation}}
  \vspace*{-\baselineskip}\vspace*{-\abovedisplayskip}
    \noindent\strut
    \begin{align}
    \BODY
    \end{align}
    \end{subequations}
    \addtocounter{equation}{-1}%
  }%
  \begin{equation}\label{#1}
  \hspace*{4em}\left.\vcenter{\unvbox\horriblesubequationsbox\unskip}\right\rbrace
  \end{equation}
}
\makeatother

\begin{document}

Some text here 
\begin{horriblesubequations}{eq:full}
  y_1 &= f_1(x) \label{eq:first} \\
  y_2 &= f_2(x) \label{eq:second} \\
  y_3 &= f_3(x) \label{eq:third}
\end{horriblesubequations}
\dots and now I can reference the full set as equations~(\ref{eq:full})
and for example the first as equation~(\ref{eq:first}). 

Some text here 
\begin{horriblesubequations}{eq:full+}
  y_1 &= f_1(x) \label{eq:first+} \\
  y_2 &= f_2(x) \label{eq:second+} \\
  y_3 &= f_3(x) \label{eq:third+} \\
  y_4 &= f_4(x) \label{eq:fourth+}
\end{horriblesubequations}
\dots and now I can reference the full set as equations~(\ref{eq:full+})
and for example the first as equation~(\ref{eq:first+}). 

\end{document}

Beware that, as the code stands, the global label is mandatory.

enter image description here


Here is a manual way of setting the tags and specifying the references. It seems appropriate since there is a disconnect between what is labelled and referenced. Typically they're the same so there is no ambiguity to the reader, but in this case there is not (say) equation (1a).

enter image description here

\documentclass{article}

\usepackage{amsmath}
\makeatletter
\newcommand{\ltxlabel}{\ltx@label}
\newcommand{\settag}[1]{
  \tag*{(#1)\qquad}
  \edef\@currentlabel{\theequation#1}}
\newcommand{\setmaintag}[1]{
  \tag*{(#1)\qquad\llap{(\theequation)}}
  \edef\@currentlabel{#1}}
\newcommand{\setref}[1]{\edef\@currentlabel{#1}}
\makeatother

\begin{document}

Some text here 
\begin{align}
  \stepcounter{equation}
  y_1 &= f_1(x) \settag{a}\ltxlabel{eq:first} \\
  y_2 &= f_2(x) \setmaintag{b}\ltxlabel{eq:second}\setref{\theequation}\ltxlabel{eq:full} \\
  y_3 &= f_3(x) \settag{c}\ltxlabel{eq:third}
\end{align}
\dots and now I can reference the full set as equations~\eqref{eq:full}
and for example the first as equation~\eqref{eq:first}. 

\end{document}

\ltxlabel allows one to set the \label immediately, which is otherwise deferred until the \tag is set within an align.

No consideration for hyperref was given, nor tested. The same goes for the "maybe" options in the question.


For an even number of equations, you can move the main equation up/down as needed:

enter image description here

Some text here 
\begin{align}
  \stepcounter{equation}
  y_1 &= f_1(x) \settag{a}\ltxlabel{eq:first} \\
  y_2 &= f_2(x) \setmaintag{b}\ltxlabel{eq:second}\setref{\theequation}\ltxlabel{eq:full} \\
  y_3 &= f_3(x) \settag{c}\ltxlabel{eq:third}
\end{align}
\dots and now I can reference the full set as equations~\eqref{eq:full}
and for example the first as equation~\eqref{eq:first}. 
\begin{align}
  \stepcounter{equation}
  y_1 &= f_1(x) \settag{a}\ltxlabel{eq:first2} \\
  y_1 &= f_2(x) \settag{b}\ltxlabel{eq:second2} \\
  y_2 &= f_3(x) \setmaintag[\dimexpr.5\normalbaselineskip+.5\jot]{c}\ltxlabel{eq:third2}
    \setref{\theequation}\ltxlabel{eq:full2} \\
  y_3 &= f_4(x) \settag{d}\ltxlabel{eq:fourth2}
\end{align}