I'm going to assume that you have a reasonable representation of the graph (for example adjacency lists with vertices indexed by small integers).
The only interesting case is $E \in o(|V|)$ (otherwise you already have $O(|V|+|E|) = O(|E|)$).
Then there are at most $O(|E|)$ non isolated vertices. You can find the set $S$ of these vertices (and hence construct the subgraph induced by $S$) in time $O(|E|)$ by simply creating an array (of size at most $2|E|$) containing all endpoints of the edges in $E$, sorting them (in linear time), and dropping the duplicates (again, in linear time).
Then you can apply the algorithm on the remaining subgraph with has $\Theta(|E|)$ vertices and $|E|$ edges (besides, if the number of remaining vertices is larger than $|E|+1$, then the graph has at least two connected components containing at least one edge each, hence no Eulerian path exists).