The reason is that (as it is defined right now) there must be an individual \vedran_...restatable
macro for each of the theorem-like environment.
I am short of time right now, but I'll try to provide a more sophisticated approach for more than just two environments.

\documentclass[a4paper]{article}
\usepackage{thmtools}
\usepackage{thm-restate}
\usepackage{xparse}
\declaretheorem[
name=Proposition,
numberwithin=section,
]{thmprop}
\ExplSyntaxOn
\NewDocumentEnvironment{prop}{o}
{
\int_gincr:N \g_vedran_prop_int
\IfNoValueTF{#1}
{
\vedran_restatable:x { \int_to_Alph:n { \g_vedran_prop_int } }
}
{
\vedran_restatable:nx { #1 } { \int_to_Alph:n { \g_vedran_prop_int } }
}
}
{
\endrestatable
\seq_gput_right:Nx \g_vedran_prop_seq
{
prop \int_to_Alph:n { \g_vedran_prop_int }
}
}
\NewDocumentCommand{\allprops}{}
{
\seq_map_inline:Nn \g_vedran_prop_seq
{
\use:c { ##1 } *
}
}
\int_new:N \g_vedran_prop_int
\seq_new:N \g_vedran_prop_seq
\cs_new_protected:Npn \vedran_restatable:n #1
{
\restatable{thmprop}{prop#1}
}
\cs_generate_variant:Nn \vedran_restatable:n { x }
\cs_new_protected:Npn \vedran_restatable:nn #1 #2
{
\restatable[#1]{thmprop}{prop#2}
}
\cs_generate_variant:Nn \vedran_restatable:nn { nx }
\ExplSyntaxOff
\declaretheorem[
name=Theoreme,
numberwithin=section,
]{thmtheoreme}
\ExplSyntaxOn
\NewDocumentEnvironment{theoreme}{o}
{
\int_gincr:N \g_vedran_theoreme_int
\IfNoValueTF{#1}
{
\vedran_theo_restatable:x { \int_to_Alph:n { \g_vedran_theoreme_int } }
}
{
\vedran_theo_restatable:nx { #1 } { \int_to_Alph:n { \g_vedran_theoreme_int } }
}
}
{
\endrestatable
\seq_gput_right:Nx \g_vedran_theoreme_seq
{
theoreme \int_to_Alph:n { \g_vedran_theoreme_int }
}
}
\NewDocumentCommand{\alltheoremes}{}
{
\seq_map_inline:Nn \g_vedran_theoreme_seq
{
\use:c { ##1 } *
}
}
\int_new:N \g_vedran_theoreme_int
\seq_new:N \g_vedran_theoreme_seq
\cs_new_protected:Npn \vedran_theo_restatable:n #1
{
\restatable{thmtheoreme}{theoreme#1}
}
\cs_generate_variant:Nn \vedran_theo_restatable:n { x }
\cs_new_protected:Npn \vedran_theo_restatable:nn #1 #2
{
\restatable[#1]{thmtheoreme}{theoreme#2}
}
\cs_generate_variant:Nn \vedran_theo_restatable:nn { nx }
\ExplSyntaxOff
\begin{document}
\section{Originals}
Some text.
\begin{prop}[Euler]
This is the first prop.
\end{prop}
Some text.
\begin{prop}
This is the second prop.
\end{prop}
Some text.
\begin{theoreme}
foo foo
\end{theoreme}
\section{All together}
\alltheoremes
\allprops
\end{document}
Update
Generic code generation with \AddDeclaredTheorems{...}
will produce all relevant macros and environments on the fly.
\documentclass[a4paper]{article}
\usepackage{thmtools}
\usepackage{thm-restate}
\usepackage{xparse}
\declaretheorem[
name=Proposition,
numberwithin=section,
]{thmprop}
\declaretheorem[
name=Theoreme,
numberwithin=section,
]{thmtheoreme}
\declaretheorem[
name=Example,
numberwithin=section,
]{thmexample}
\ExplSyntaxOn
\seq_new:N \g_vedran_declaredtheorem_seq
\cs_generate_variant:Nn \cs_generate_variant:Nn { cn } % Does this work????
\cs_generate_variant:Nn \int_to_Alph:n {c}
\NewDocumentCommand{\AddDeclaredTheorems}{m}{%
\clist_set:Nn \l_tmpa_clist {#1}
% Loop over elements in the list and add them to the list of declared theorems
\clist_map_inline:Nn \l_tmpa_clist {
\seq_gput_right:Nn \g_vedran_declaredtheorem_seq {##1}
}
\seq_gremove_duplicates:N \g_vedran_declaredtheorem_seq
\seq_map_inline:Nn \g_vedran_declaredtheorem_seq {%
\int_if_exist:cF { g_vedran_##1_int } {
\int_new:c {g_vedran_##1_int}
}
\seq_if_exist:cTF { g_vedran_##1_seq }{%
\seq_gclear:c { g_vedran_##1_seq }
}{% No, does not exist, define it
\seq_new:c { g_vedran_##1_seq }
}
\vedran_generate_restatable_noopt:n {##1}
\vedran_generate_restatable_opt:n {##1}
%Build the variants
\cs_generate_variant:cn { vedran_##1_restatable:n } { x }
\cs_generate_variant:cn { vedran_##1_restatable:nn } { nx }
\vedran_generate_wrapper_env:n {##1}
\vedran_generate_allthingies:n {##1}
}% End of \seq_map_inline
}
\cs_new:Nn \vedran_generate_restatable_noopt:n {%
\cs_if_exist:cF { vedran_#1_restatable:n } {
\cs_new_protected:cn {vedran_#1_restatable:n}{%
\typeout{Using vedran_#1_restatable:x}%
\restatable{thm#1}{#1##1}
}
}
}
\cs_new:Nn \vedran_generate_restatable_opt:n {
\cs_if_exist:cF { vedran_#1_restatable:nn } {
\cs_new_protected:cn {vedran_#1_restatable:nn }{%
\restatable[##1]{thm#1}{#1##2}
}
}
}
\cs_new:Nn \vedran_generate_wrapper_env:n {%
\cs_if_exist:cF {#1} {
\NewDocumentEnvironment{#1}{o}
{
\int_gincr:c { g_vedran_#1_int }
\IfNoValueTF{##1}
{
\use:c{vedran_#1_restatable:x} { \int_to_Alph:c { g_vedran_#1_int } }
}
{
\use:c{vedran_#1_restatable:nx} { ##1 } { \int_to_Alph:c { g_vedran_#1_int } }
}
}
{
\endrestatable
\seq_gput_right:cx {g_vedran_#1_seq} {#1\int_to_Alph:c { g_vedran_#1_int }}
}
}
}
\cs_new:Nn \vedran_generate_allthingies:n {
\cs_new:cpn {all#1s}
{
\seq_map_inline:cn {g_vedran_#1_seq}
{
\use:c { ####1 } *
}
}
}
\ExplSyntaxOff
\begin{document}
\AddDeclaredTheorems{prop,theoreme,example}
\section{Originals}
Some text.
\begin{prop}[Euler]
This is the first prop.
\end{prop}
\begin{example}
$E=mc^2$
\end{example}
Some text.
\begin{prop}
This is the second prop.
\end{prop}
Some text.
\begin{theoreme}
foo foo
\end{theoreme}
\section{All together}
\alltheoremes
\allprops
\allexamples
\end{document}
**Next Update -- with \AllThingiesInOrderOfAppearance
command
\documentclass[a4paper]{article}
\usepackage{thmtools}
\usepackage{thm-restate}
\usepackage{xparse}
\declaretheorem[
name=Proposition,
numberwithin=section,
]{thmprop}
\declaretheorem[
name=Theoreme,
numberwithin=section,
]{thmtheoreme}
\declaretheorem[
name=Example,
numberwithin=section,
]{thmexample}
\ExplSyntaxOn
\seq_new:N \g_vedran_declaredtheorem_seq
\seq_new:N \g_vedran_ordered_seq
\cs_generate_variant:Nn \cs_generate_variant:Nn { cn } % Does this work????
\cs_generate_variant:Nn \int_to_Alph:n {c}
\NewDocumentCommand{\AddDeclaredTheorems}{m}{%
\clist_set:Nn \l_tmpa_clist {#1}
% Loop over elements in the list and add them to the list of declared theorems
\clist_map_inline:Nn \l_tmpa_clist {
\seq_gput_right:Nn \g_vedran_declaredtheorem_seq {##1}
}
\seq_gremove_duplicates:N \g_vedran_declaredtheorem_seq
\seq_map_inline:Nn \g_vedran_declaredtheorem_seq {%
\int_if_exist:cF { g_vedran_##1_int } {
\int_new:c {g_vedran_##1_int}
}
\seq_if_exist:cTF { g_vedran_##1_seq }{%
\seq_gclear:c { g_vedran_##1_seq }
}{% No, does not exist, define it
\seq_new:c { g_vedran_##1_seq }
}
\vedran_generate_restatable_noopt:n {##1}
\vedran_generate_restatable_opt:n {##1}
%Build the variants
\cs_generate_variant:cn { vedran_##1_restatable:n } { x }
\cs_generate_variant:cn { vedran_##1_restatable:nn } { nx }
\vedran_generate_wrapper_env:n {##1}
\vedran_generate_allthingies:n {##1}
}% End of \seq_map_inline
}
\cs_new:Nn \vedran_generate_restatable_noopt:n {%
\cs_if_exist:cF { vedran_#1_restatable:n } {
\cs_new_protected:cn {vedran_#1_restatable:n}{%
\restatable{thm#1}{#1##1}
}
}
}
\cs_new:Nn \vedran_generate_restatable_opt:n {
\cs_if_exist:cF { vedran_#1_restatable:nn } {
\cs_new_protected:cn {vedran_#1_restatable:nn }{%
\restatable[##1]{thm#1}{#1##2}
}
}
}
\cs_new:Nn \vedran_generate_wrapper_env:n {%
\cs_if_exist:cF {#1} {
\NewDocumentEnvironment{#1}{o}
{
\int_gincr:c { g_vedran_#1_int }
\IfNoValueTF{##1}
{
\use:c{vedran_#1_restatable:x} { \int_to_Alph:c { g_vedran_#1_int } }
}
{
\use:c{vedran_#1_restatable:nx} { ##1 } { \int_to_Alph:c { g_vedran_#1_int } }
}
}
{
\endrestatable
\seq_gput_right:cx {g_vedran_#1_seq} {#1\int_to_Alph:c { g_vedran_#1_int }}
\seq_gput_right:Nx \g_vedran_ordered_seq {#1\int_to_Alph:c { g_vedran_#1_int }}
}
}
}
\NewDocumentCommand{\AllThingiesInOrderOfAppearance}{}{%
\seq_map_inline:Nn \g_vedran_ordered_seq {%
\use:c {##1} *
}
}
\cs_new:Nn \vedran_generate_allthingies:n {
\cs_new:cpn {all#1s}
{
\seq_map_inline:cn {g_vedran_#1_seq}
{
\use:c { ####1 } *
}
}
}
\ExplSyntaxOff
\begin{document}
\AddDeclaredTheorems{prop,theoreme,example}
\section{Originals}
Some text.
\begin{prop}[Euler]
This is the first prop.
\end{prop}
\begin{example}
$E=mc^2$
\end{example}
Some text.
\begin{prop}
This is the second prop.
\end{prop}
Some text.
\begin{theoreme}
foo foo
\end{theoreme}
\section{All together}
% All in order
\AllThingiesInOrderOfAppearance
% Individual ones in a row
Now individual groups:
\alltheoremes
\allprops
\allexamples
\end{document}

\vedran_restatable
more than once....restatable
macro for each theorem type. This can be done in loop, most likely, but requires more work to do. (I am short of time, right now)